作者查詢 / ssccg

總覽項目: 發文 | 留言 | 暱稱
作者 ssccg 在 PTT [ java ] 看板的留言(推文), 共2140則
限定看板:java
看板排序:
Re: [問題] static runtime問題
[ java ]15 留言, 推噓總分: +3
作者: bleed1979 - 發表於 2014/12/20 15:51(11年前)
5Fssccg: 為什麼在runtime執行要可以? runtime的時候static context12/20 21:48
6Fssccg: 裡還是沒有instance可以用啊12/20 21:48
10Fssccg: 其實不是用instance呼叫,是compiler看reference variable12/21 13:53
11Fssccg: 的type去選class,這是compile time做的沒用到instance12/21 13:55
[問題] static runtime問題
[ java ]7 留言, 推噓總分: 0
作者: kdok123 - 發表於 2014/12/20 15:31(11年前)
1Fssccg: super就是指parent instance,Java spec裡沒有說在static12/20 21:53
2Fssccg: context裡super可以當parent class來用,所以就不行12/20 21:53
3Fssccg: 跟runtime不runtime沒關係12/20 21:53
4Fssccg: 這不是做不做的到的問題,而是Java設計上就是如此12/20 22:10
[問題] 如何自訂一個可以直接=的類別
[ java ]14 留言, 推噓總分: +6
作者: AlphaCall - 發表於 2014/12/19 20:44(11年前)
12Fssccg: C#有Struct、ValueType,在primitive的處理跟java不太一樣12/22 09:59
13Fssccg: 不過C#也不能overload =,在這邊要用implicit coversion12/22 10:29
[問題] 多繼承super的問題
[ java ]18 留言, 推噓總分: +4
作者: egheee - 發表於 2014/12/19 12:15(11年前)
6Fssccg: class封裝來說,繼承就是取得parent的非private的member12/19 15:04
7Fssccg: 但是parent又去繼承了什麼東西是parent class的實作細節12/19 15:04
8Fssccg: child class知道parent有tell(),但不該知道parent的第幾層12/19 15:05
9Fssccg: parent有個tell(),那不是由繼承能使用的介面12/19 15:05
10Fssccg: 你想跳過B這件事就有問題了,C本來就不該知道B是繼承了什麼12/19 15:07
11Fssccg: C只知道B提供什麼,不知道那是B自己實做還是繼承來的12/19 15:08
Re: [問題] 請教String的問題
[ java ]81 留言, 推噓總分: +4
作者: kdok123 - 發表於 2014/12/18 20:00(11年前)
3Fssccg: 你根本沒有懂,就說你的結果跟不可變性"完全"沒關係12/18 20:33
4Fssccg: String不可變是String不提供任何方法修改它裡面char array12/18 20:34
5Fssccg: 存的值,要修改一定是產生新的String object12/18 20:35
6Fssccg: 剛進method的str2指向的就是完全同一個String12/18 20:39
7Fssccg: 並沒另外開一個空間,是之後你自己開新的空間放新的String12/18 20:40
8Fssccg: ="abc"相當於=new String(new char[] {'a','b','c'})12/18 20:43
9Fssccg: 可變性的意義在於如果有個MutableString class12/18 20:44
10Fssccg: 你可以用str2.setValue("abc")去改object的內容12/18 20:45
11Fssccg: 而不用寫成str2 = new MutableString("abc")12/18 20:45
12Fssccg: 只要用的是 = new XXX(),不管哪個class都是一樣的結果12/18 20:47
13Fssccg: 只要你用的是 = 都是不會變的,因為 = 不是改object裡的值12/18 20:52
14Fssccg: 而是改reference指向的位址12/18 20:52
15Fssccg: 只有primitive type的時候用 = 才是改值12/18 20:52
23Fssccg: 覆蓋原本的值也是覆蓋reference,而不是覆蓋value12/18 20:57
25Fssccg: 上面我簡化沒有考慮string pool的問題,但重點就是你用 =12/18 20:57
26Fssccg: 永遠改不到原本那個object的值12/18 20:57
27Fssccg: 任何reference type變數的賦值動作(=)都只是改指向不同物件12/18 20:59
31Fssccg: 我是不知道你打算怎麼試,但是除了primitive的autowrapper12/18 21:05
32Fssccg: 還有String literal("...")以外,其他type都很清楚就是換了12/18 21:06
33Fssccg: 物件啊...12/18 21:07
34Fssccg: 如果你有學過C++,java的reference type基本上就是pointer12/18 21:10
35Fssccg: 如果是C++的pass by reference(&),即使物件是mutable12/18 21:14
36Fssccg: 還是可直接改caller func中那個reference的值(指向的位址)12/18 21:15
37Fssccg: 或是你可以去用C#試,C#的reference type跟java一樣12/18 21:17
38Fssccg: String也是Immutable,但是方法可以pass by reference12/18 21:17
39Fssccg: 你的ex1用C# pass by ref版 http://ideone.com/Miptpm12/18 21:23
45Fssccg: immutable不是不能修改reference值,是不能修改object裡面12/18 23:20
46Fssccg: 的data,你還是直接看上面的C#的範例...12/18 23:22
47Fssccg: 既然會C++也給你一個C++版 http://ideone.com/DSzyGI12/18 23:37
48Fssccg: 不是我覺得,是java的reference變數真的就是pointer12/18 23:37
49Fssccg: 改是改pointer指的位址,但是在call by value的時候改不動12/18 23:38
50Fssccg: caller func裡面的pointer變數12/18 23:38
51Fssccg: 很明顯就call by value/call by reference的差別啊..12/18 23:46
52Fssccg: btw auto-boxing是指對只吃Object子class的地方(如list)12/18 23:49
53Fssccg: 自動包wrapper,unboxing是在assign給primitive變數的時候12/18 23:50
54Fssccg: 自動改為取值(.xxxValue)而不是assign reference12/18 23:51
55Fssccg: 如果全程都是直接用Integer這個class,那與一般class沒差別12/18 23:51
56Fssccg: 把Integer assign給Integer變數是不會有auto-box/unbox行為12/18 23:53
64Fssccg: 就算是mutable class,caller func的pointer還是不會改到12/19 09:41
65Fssccg: 因為是pass by value,在傳入時只是複製pointer的值12/19 09:42
66Fssccg: d大的圖我只能說 // 因為字串的 Immutable... 這句完全錯誤12/19 09:43
67Fssccg: 不管是什麼class,用assign (=)的方式,改的永遠都是str2指12/19 09:44
68Fssccg: 向的位址(pointer value)而已,原本的那個object不會被動到12/19 09:45
69Fssccg: 要動原本的object就要用它的method/field12/19 09:48
70Fssccg: immutable意義在於原本的object沒有公開的改值method/field12/19 09:48
71Fssccg: 用pointer來說的話就是要改object的值一定要先dereference12/19 09:50
72Fssccg: 用=只會改pointer存的位址12/19 09:51
73Fssccg: 你好像幻想lhs如果是個mutable reference type變數12/19 10:05
74Fssccg: 用=會自動把lhs指向的物件中代表value的field拿出來,然後12/19 10:06
75Fssccg: 把rhs expression物件中代表value的field裡存的值放進去12/19 10:07
76Fssccg: 從你上面提auto-boxing可以看出來,可是實際上沒這回事12/19 10:10
77Fssccg: =只會把lhs reference直接改成指向rhs的結果物件12/19 10:11
78Fssccg: lhs原本指向什麼完全沒差,在=的動作中那個物件根本沒出場12/19 10:11
79Fssccg: =只有在lhs是primitive type的時候才是賦值(因為primitive)12/19 10:22
80Fssccg: type才有所謂value,如果lhs是reference type,他指向的物12/19 10:22
81Fssccg: 件不一定有所謂的value,這時做的都只是改指向的物件12/19 10:24
Re: [問題] Generic 的 cast 問題
[ java ]7 留言, 推噓總分: 0
作者: changyuheng - 發表於 2014/12/18 19:53(11年前)
2Fssccg: Generic是compile-time的檢查,用一個run-time的參數字串12/19 12:47
3Fssccg: 來決定就不是generic,但是你又想要compile-time不檢查型別12/19 12:48
4Fssccg: (不用cast),Java是做不到的12/19 12:48
5Fssccg: generic基本上還是static型別系統,你想要的要dynamic型別12/19 12:53
6Fssccg: 不是不能這樣設計,但是Java沒有dynamic型別所以就只能cast12/19 12:55
[問題] 請教String的問題
[ java ]27 留言, 推噓總分: +3
作者: kdok123 - 發表於 2014/12/17 21:19(11年前)
19Fssccg: ex1是產生一個新的reference(pass by reference value)12/18 05:49
20Fssccg: 沒有產生另一個instance object12/18 05:49
21Fssccg: 剛進tell時str1跟str2是指向同一個String object12/18 05:50
22Fssccg: 重點在str1跟str2是兩個不同的reference,str2改指到哪邊12/18 05:51
23Fssccg: str1都沒變, ex2裡面e1跟str2也一樣是不同的reference12/18 05:52
24Fssccg: 剛進tell時e1和str2指向同一個Ex2 object,所以Ex2裡面的12/18 05:52
25Fssccg: temp是同一個12/18 05:53
26Fssccg: ex1的行為相當於ex2在tell裡寫str2 = new Ex2(); ...12/18 05:54
[JSP ] 請問form如何寫callback function
[ java ]9 留言, 推噓總分: 0
作者: NullLife - 發表於 2014/12/14 20:31(11年前)
1Fssccg: 用ajax,你就可以什麼都不回傳網頁也不會被洗掉12/14 21:27
2Fssccg: 整頁重新request就什麼都不剩了,沒有什麼callback12/14 21:28
4Fssccg: 可以啊,把post時候網頁上所有狀態記到cookie/local store12/14 22:19
5Fssccg: 或是傳回server,然後照著填回去就可以12/14 22:19
6Fssccg: 但這不是servlet response什麼都不做,而是要重現全部狀態12/14 22:20
7Fssccg: 用ajax,client端網頁還在,才能設回來的動作12/14 22:23
[JSP ] JSP和script的關係
[ java ]7 留言, 推噓總分: +1
作者: cat99961 - 發表於 2014/12/13 15:49(11年前)
1Fssccg: 我不知道你指的script是什麼,我猜他的script是指code12/13 16:02
2Fssccg: google到了出處那篇,感覺有好幾點不太正確...12/13 16:11
[問題] Generic 的 cast 問題
[ java ]3 留言, 推噓總分: 0
作者: changyuheng - 發表於 2014/12/12 00:08(11年前)
2Fssccg: 要不cast你type就要用generic,那你整個class就要有個Type12/12 10:45
3Fssccg: parameter,你現在的作法完全不generic,跟用List沒差別..12/12 10:45