例子:一个person类。
Obejcet obj = new Person();
if(obj instanceof Person){
per= (Person)obj;
}不解之处请各位java高端写手解答一下:第一行这样写就表示obj是Person类的一个实例了,但第二行为什么要判断一下obj是不是Person类的实例,不是没必要吗,既然是Person的实例了就可以直接进行第三行向下转型的操作了啊。
Obejcet obj = new Person();
if(obj instanceof Person){
per= (Person)obj;
}不解之处请各位java高端写手解答一下:第一行这样写就表示obj是Person类的一个实例了,但第二行为什么要判断一下obj是不是Person类的实例,不是没必要吗,既然是Person的实例了就可以直接进行第三行向下转型的操作了啊。
Object obj=new Person()实际上表达的是创建一个Person类的实例,由其父类的变量obj引用此实例
由于其父类的变量obj除了能引用Person类的实例外,还能引用任何Object的子类的实例,所以第二句判断下引用的是不是确实就是Person类的实例,如果是,就可以强制类型转换了。这个例子应该是为了演示继承与多态。
当然你如果知道obj实际就是是在引用一个Person类的实例,大可以直接类型转换.以上是个人见解,如有不对请指教。