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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。