java—–instanceof与getClass的区别
标签:oarstarttoo派生getcrgseoftailalt
在比较一个类是否和另一个类属于同一个类实例的时候,我们通常可以采用instanceof和getClass两种方法通过两者是否相等来判断,但是两者在判断上面是有差别的,下面从代码中看看区别:
[java]view plaincopy
publicclassTest
{
publicstaticvoidtestInstanceof(Objectx)
{
System.out.println(\”xinstanceofParent:\”+(xinstanceofParent));
System.out.println(\”xinstanceofChild:\”+(xinstanceofChild));
System.out.println(\”xgetClassParent:\”+(x.getClass()==Parent.class));
System.out.println(\”xgetClassChild:\”+(x.getClass()==Child.class));
}
publicstaticvoidmain(String[]args){
testInstanceof(newParent());
System.out.println(\”—————————\”);
testInstanceof(newChild());
}
}
classParent{
}
classChildextendsParent{
}
/*
输出:
xinstanceofParent:true
xinstanceofChild:false
xgetClassParent:true
xgetClassChild:false
—————————
xinstanceofParent:true
xinstanceofChild:true
xgetClassParent:false
xgetClassChild:true
*/
从程序输出可以看出,instanceof进行类型检查规则是:你属于该类吗?或者你属于该类的派生类吗?而通过getClass获得类型信息采用==来进行检查是否相等的操作是严格的判断。不会存在继承方面的考虑;
java—–instanceof与getClass的区别
标签:oarstarttoo派生getcrgseoftailalt
原文地址:http://www.cnblogs.com/diegodu/p/7266953.html