Java instanceof和getClass()区别实例解析
对象instanceof类名,表示对象是类名的实例,或者是其子类的实例,返回true,否则返回false。
对象.getClass()==类名.class,表示只有对象是该类的实例,才返回true
classA{}
classBextendsA{}
Objecto1=newA();
Objecto2=newB();
o1instanceofA=>true
o1instanceofB=>false
o2instanceofA=>true//<================HERE
o2instanceofB=>true
o1.getClass().equals(A.class)=>true
o1.getClass().equals(B.class)=>false
o2.getClass().equals(A.class)=>false//<===============HERE
o2.getClass().equals(B.class)=>true
getClass()willbeusefulwhenyouwanttomakesureyourinstanceisNOTasubclassoftheclassyouarecomparingwith.
例子:
classBase{
}
classDerivedextendsBase{
}
publicclassHello{
publicstaticvoidmain(String[]args)throwsParseException{
Derivedd=newDerived();
booleanbRet;
bRet=dinstanceofDerived;//true
bRet=dinstanceofBase;//true
bRet=d.getClass()==Derived.class;//true
//bRet=d.getClass()==Base.class;//出错
bRet=d.getClass().equals(Base.class);//false
}
}
使用,重写equals
classPerson{
privateStringid;
privateStringname;
//重写equals()方法,提供自定义的相等标准
publicbooleanequals(Objectobj){
if(this==obj)//若为同一个对象
returntrue;
//只有当obj是Person对象
if(null!=obj&&obj.getClass()==Person.class){
Personp=(Person)obj;
if(id.equals(obj).getId()&&...){
returntrue;
}
}
returnfalse;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。