import java.awt.*;
import java.awt.event.*;
public class TestStopWatch extends Frame{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestStopWatch tsw = new TestStopWatch();
tsw.setSize(1000, 800);
tsw.setVisible(true);
tsw.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
e.getWindow().setVisible(false);
((Window)e.getSource()).dispose(); //这行.
}
});
}
}这是我的疑问,我觉得不能进行向下转型,请问我的问题在哪里?问题补充:
我想问的是,
怎么可以那么随意的向下转型,不会危险吗?
这句代码会先执行e.getSource.返回的是Object类型,Object类型是一起引用类型的父类
自然可以强制转换.
你试着((Window)e).getSource.dispose就会发现不能强制转换了.这种转换要满足一个条件
必须存在这种父子关系才能强制转换,为了避免这种情况,我们一般用instance of来判断,
if(s1 instanceof s2){
执行业务代码
}写了这么多,给点分吧》。
因此就如楼上说的用instanceof判断一下。