作者darkgerm (黑骏)
看板java
标题[问题] JAVA 说明文件写错了?
时间Fri Feb 18 01:38:34 2011
在 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
1F:推 LPH66:A String "IS-A"(n) Object 这个"IS-A"关系你该不会忘了吧? 02/18 03:22
2F:→ LPH66:话说回来 getSource 哪知道你的来源可能会是什麽物件 02/18 03:24
3F:→ kanandg1:getClass会传回runtime(concrete)的class 02/18 03:24
4F:推 LPH66:所以只好写个 Object 在上面 实际传什麽回来是执行期的事 02/18 03:25
5F:→ LPH66:然後就如3F说的 getClass 会告诉你执行期时它实际上是什麽 02/18 03:27
6F:→ kanandg1:绿色的那段程式码中写的是getItem? 02/18 03:27
喔对…改掉了
7F:→ a1234957:............... 02/18 07:36
8F:推 TonyQ:等等 getItem 跟 getsource 有什麽关系 -_-??? 02/18 08:17
而且用 getClass() 看明明是 Checkbox
却不能写 e.getSource().getLable()
一定要先转型-> ( (Checkbox)e.getSource() ).getLable()
虽然 e.getSource() 不能知道来源是什麽物件
可是 getClass() 却能知道,这里我觉得还蛮怪的…
※ 编辑: darkgerm 来自: 124.8.139.231 (02/18 10:06)
9F:推 a1234957:JAVA的物件导向你应该要再好好研究 02/18 11:21
10F:推 a1234957:物件继承,和物件处於runtime时期的状况 02/18 11:28
11F:推 fanzero:楼上说的真对 02/27 12:42