首页 > 其他 > 详细

instanceof与class的等价性

时间:2016-10-17 00:02:03      阅读:255      评论:0      收藏:0      [点我收藏+]

java编程思想中,关于查询类型信息时,对instanceof的形式与直接比较class对象(equals的形式),给出了一个很重要的差别。

class Animal{}

class Dog extends Animal{}

public class AnimalMain {

  static void test(Object obj){
    System.out.println("obj的类型: " + obj.getClass());
    System.out.println("obj instanceof Animal: " + (obj instanceof Animal) );
    System.out.println("Animal.class.isInstance(obj)): " + (Animal.class.isInstance(obj)));
    System.out.println("obj.getClass() == Animal.class: " + (obj.getClass() == Animal.class));
    System.out.println("Animal.class.equals(obj): " + (Animal.class.equals(obj.getClass())));
  }

  public static void main(String[] args) {
    test(new Animal());
    System.out.println("-------------------------------------");
    test(new Dog());
  }
}

instanceof保持了类型的概念,它代表:你是这个类么,你是这个类的派生类么。而==和equals比较的是实际的对象,没有考虑继承

instanceof与class的等价性

原文:http://www.cnblogs.com/wdtxfd/p/5968122.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!