java—–instanceof与getClass的区别

此页面是否是列表页或首页?未找到合适正文内容。

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

    作者: 安兔兔

    为您推荐

    返回顶部