Frame f = new Frame(); // new一个Frame对象.
f.setSize(1000, 800); //设置长和宽.
f.setVisible(true); //设置可见性.
f.addWindowListener(new WindowAdapter() { //为窗口注册监听器.
public void windowClosing(WindowEvent e){ //重写 windowClosing方法.
((Window)e.getSource()).dispose(); //疑问 一
((Window)e.getComponent()).dispose(); //疑问二
}
我想问的两个疑问:一:((Window)e.getSource()).dispose();//将Object -> Window
二:((Window)e.getSource()).dispose();//将Component -> Window
我的疑问是不能随意转成Window(向下转型),
这个问题我曾经疑问了很久,但是刚刚我想,是不是 e 是WindowEven 的,所以返回会自己返回Window的实例
(即instenceof Window),所以可以向下转型,
是不是这样的?
f.setSize(1000, 800); //设置长和宽.
f.setVisible(true); //设置可见性.
f.addWindowListener(new WindowAdapter() { //为窗口注册监听器.
public void windowClosing(WindowEvent e){ //重写 windowClosing方法.
((Window)e.getSource()).dispose(); //疑问 一
((Window)e.getComponent()).dispose(); //疑问二
}
我想问的两个疑问:一:((Window)e.getSource()).dispose();//将Object -> Window
二:((Window)e.getSource()).dispose();//将Component -> Window
我的疑问是不能随意转成Window(向下转型),
这个问题我曾经疑问了很久,但是刚刚我想,是不是 e 是WindowEven 的,所以返回会自己返回Window的实例
(即instenceof Window),所以可以向下转型,
是不是这样的?
解决方案 »
- 李兴华 System类 垃圾对象的回收那一节的,不知道为什么不出结果。
- 小弟刚学习java,遇到一个关于循环自加的问题!
- 关于java io奇怪问题
- 一个发短信的类,明天就要用,急死了,总是报错,请各位帮帮我啊!谢谢!在线等
- 请高手帮帮我解释一下这些报文的格式!
- 一个奇怪的Socket通信问题:ServerSocket一直在监听,但是accept来的新Socket却总是不能读取信息!?!?!?
- 为什么用getInt()可以用getString()却不可以呢?
- 急!!!帮忙写个有关I/O的小程序。
- To masterz():高手,您能不能说具体一点,怎样“在BufferedImage/Image对象上写字“?
- 请问如果在另一台无装JMF和JDK的机上运行
- 请教 java核心技术 高级特性中的一段代码
- 这个问题怎么解决? 可能你也不知道的....
楼主上一贴子,实际上调用这个方法返回的是TestStopWatch 类对象(被向上转型为Object).
而TestStopWatch 类继承关系是:
Object-->Component-->Container-->Window-->Frame-->TestStopWatch
dispose()方法为Window类的方法,本身TestStopWatch 的对象是可以直接用的,但是给向上转型成Object了,所以不向下转是不能用了,(Object无此方法)。所以才要向下转型。为什么能向下转呢,就是因为有上面的继承关系,虽然是被转成Object,但实际上是 TestStopWatch 对象,所以向下转为Component ,Container, Window, Frame, TestStopWatch 都是没问题的。楼上这个代码,getSource 应该得到一个Frame类的对象,向下转肯定没问题的。
是不是这样的?不是这样的。
可以将此引用转为所有window的superclass的引用,这也是合乎逻辑的,因为window实例中包含所有superclass的属性