java-----instanceof与getClass的区别

标签: java的instanceof与getClass的区别
3人阅读 评论(0) 收藏 举报
分类:

在比较一个类是否和另一个类属于同一个类实例的时候,我们通常可以采用instanceof和getClass两种方法通过两者是否相等来判断,但是两者在判断上面是有差别的,下面从代码中看看区别:

[java] view plain copy
  1. public class Test  
  2. {  
  3.     public static void testInstanceof(Object x)  
  4.     {  
  5.         System.out.println("x instanceof Parent:  "+(x instanceof Parent));  
  6.         System.out.println("x instanceof Child:  "+(x instanceof Child));  
  7.         System.out.println("x getClass Parent:  "+(x.getClass() == Parent.class));  
  8.         System.out.println("x getClass Child:  "+(x.getClass() == Child.class));  
  9.     }  
  10.     public static void main(String[] args) {  
  11.         testInstanceof(new Parent());  
  12.         System.out.println("---------------------------");  
  13.         testInstanceof(new Child());  
  14.     }  
  15. }  
  16. class Parent {  
  17.   
  18. }  
  19. class Child extends Parent {  
  20.   
  21. }  
  22. /* 
  23. 输出: 
  24. x instanceof Parent:  true 
  25. x instanceof Child:  false 
  26. x getClass Parent:  true 
  27. x getClass Child:  false 
  28. --------------------------- 
  29. x instanceof Parent:  true 
  30. x instanceof Child:  true 
  31. x getClass Parent:  false 
  32. x getClass Child:  true 
  33. */  

从程序输出可以看出,instanceof进行类型检查规则是:你属于该类吗?或者你属于该类的派生类吗?而通过getClass获得类型信息采用==来进行检查是否相等的操作是严格的判断。不会存在继承方面的考虑;


转载自:https://blog.csdn.net/hzw19920329/article/details/51095413

查看评论

instanceof 和 getclass 的区别

http://www.cnblogs.com/scutwang/p/3675857.html http://blog.csdn.net/hzw19920329/article/details/510...
  • jason_cuijiahui
  • jason_cuijiahui
  • 2017-10-03 16:55:21
  • 75

java instanceof和getClass()的区别以及继承与组合的区别

1.instanceof:比较的是继承关系或者实现关系的类类型,子类对象或者实现类对象放在前面,例如: class A{} class B extends A{} B b = new B(); b i...
  • hack517
  • hack517
  • 2013-04-25 10:25:38
  • 5249

java 枚举类 getClass和getDeclaringClass的区别

在使用枚举类的时候,建议用getDeclaringClass返回枚举类。但是为什么不用getClass呢?下面来看看代码: public enum FruitEnum{ BA...
  • DaJian35
  • DaJian35
  • 2018-03-26 22:03:54
  • 33

getClass()和getClassLoader()区别 以及ClassLoader详解及用途(文件加载,类加载)

获得ClassLoader的几种方法可以通过如下3种方法得到ClassLoader   this.getClass().getClassLoader(); // 使用当前类的ClassLoader  ...
  • jyw935478490
  • jyw935478490
  • 2016-03-26 16:27:42
  • 1224

instanceof 与 getClass()的区别

instanceof运算符与getClass()方法的区别
  • bruce_lv
  • bruce_lv
  • 2017-09-21 10:37:46
  • 118

getClass( )函数与Xxx类.class

如果你知道一个实例,那么可以通过实例的“getClass()”方法获得该对象的类型类,如果你知道一个类型,那么可以使用“.class”的方法获得该类型的类型类。 详见java的getClass( )函...
  • ZZh1301051836
  • ZZh1301051836
  • 2017-01-30 00:21:41
  • 286

java中getClass( )和class()的联系和区别

java有两个获得类名的方法getClass()和class(),这两个方法看似一样,实则不然。这两个方法涉及到了java中的反射。 反射 所谓反射,可以理解为在运行时期获取对象类型信息的操作。传...
  • xingjiarong
  • xingjiarong
  • 2015-08-24 08:51:20
  • 20296

scala类型系统:2) classOf与getClass方法的差异

scala类型系统:2) classOf与getClass方法的差异 11条回复 前一篇在提到获取Class时的两个方法:classOf 和 getClass scala> class A s...
  • jiangpeng59
  • jiangpeng59
  • 2016-11-08 23:45:20
  • 399

【java】深入理解getClass()

之所以标题写的是深入理解,主要是为了让更多人能够惯性思维的以为我这个是一篇好文。事情的真相是我只是为了和网络上面很多抄来抄去的做一下区分而已,自己遇到这个问题的时候,也是百度、google,发现很多文...
  • lzm18064126848
  • lzm18064126848
  • 2016-12-27 20:56:35
  • 1083

java中Class对象详解和类名.class, class.forName(), getClass()区别

Class对象的生成方式如下:  1.类名.class 说明: JVM将使用类装载器, 将类装入内存(前提是:类还没有装入内存),不做类的初始化工作.返回Class的对象  2.Cl...
  • yippeelyl
  • yippeelyl
  • 2015-09-13 08:28:10
  • 1973
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 1085
    排名: 4万+