[問題] JAVA 說明文件寫錯了?

看板java作者 (黑駿)時間15年前 (2011/02/18 01:38), 編輯推噓6(605)
留言11則, 5人參與, 最新討論串1/3 (看更多)
在 Class ItemEvent 裡 http://download.oracle.com/javase/6/docs/api/java/awt/event/ItemEvent.html 有一個 method 是 Object getItem() 他的說明是 Returns the item affected by the event. 看起來回傳值是 Object 可是我在實做 ItemListener 時,寫了下面這段程式: public void itemStateChanged(ItemEvent e) { System.out.println(e.getItem().getClass()); } 跑出來竟然是 class java.lang.String !! 也因此我不能用 getItem() 取得是誰觸發了事件… 是 java 的說明文件寫錯了嗎? 不過有另一個繼承自 java.util.EventObject 的 method Object getSource() 把剛剛的程式改成用這個 method 的話 會出現 class java.awt.Checkbox 雖然觸發事件的確實是 Checkbox,可是回傳的物件不是應該是 Object 嗎…? -- 光明 的背後 是 黑暗 黑暗 的背後 還是 黑暗 由此可知 黑暗 > 光明 Q.E.D. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.128.39

02/18 03:22, , 1F
A String "IS-A"(n) Object 這個"IS-A"關係你該不會忘了吧?
02/18 03:22, 1F

02/18 03:24, , 2F
話說回來 getSource 哪知道你的來源可能會是什麼物件
02/18 03:24, 2F

02/18 03:24, , 3F
getClass會傳回runtime(concrete)的class
02/18 03:24, 3F

02/18 03:25, , 4F
所以只好寫個 Object 在上面 實際傳什麼回來是執行期的事
02/18 03:25, 4F

02/18 03:27, , 5F
然後就如3F說的 getClass 會告訴你執行期時它實際上是什麼
02/18 03:27, 5F

02/18 03:27, , 6F
綠色的那段程式碼中寫的是getItem?
02/18 03:27, 6F
喔對…改掉了

02/18 07:36, , 7F
...............
02/18 07:36, 7F

02/18 08:17, , 8F
等等 getItem 跟 getsource 有什麼關係 -_-???
02/18 08:17, 8F
而且用 getClass() 看明明是 Checkbox 卻不能寫 e.getSource().getLable() 一定要先轉型-> ( (Checkbox)e.getSource() ).getLable() 雖然 e.getSource() 不能知道來源是什麼物件 可是 getClass() 卻能知道,這裡我覺得還蠻怪的… ※ 編輯: darkgerm 來自: 124.8.139.231 (02/18 10:06)

02/18 11:21, , 9F
JAVA的物件導向你應該要再好好研究
02/18 11:21, 9F

02/18 11:28, , 10F
物件繼承,和物件處於runtime時期的狀況
02/18 11:28, 10F

02/27 12:42, , 11F
樓上說的真對
02/27 12:42, 11F
文章代碼(AID): #1DNLqTuv (java)
文章代碼(AID): #1DNLqTuv (java)