instanceof和getClass两种方法的区别

原创 2018年04月17日 15:12:23

在比较一个类是否和另一个类属于同一个类实例的时候,我们通常可以采用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/Carino_U/article/details/79975223

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
  • 5250

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

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

Java重写Equals()该用instanceof还是getClass()?

网上流行的getClass()版本如下public class Student { private String name; @Override public boolean e...
  • NEWCIH
  • NEWCIH
  • 2017-07-20 10:04:54
  • 532

instanceof 与 getClass()的区别

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

instanceof和getClass()的区别

getClass() will be useful when you want to make sure your instance is NOT a subclass of the class yo...
  • u014746965
  • u014746965
  • 2015-07-16 21:27:53
  • 299

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

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

Java中的getGenericSuperclass方法的基本用法

通过getGenericSuperclass方法可以获取当前对象的直接超类的 Type 实例: package cn.tzz.lang.clazz; public class User { ...
  • tanksyg
  • tanksyg
  • 2015-11-19 15:15:27
  • 19135

getClass\instanceof区别

1、getClass获得类型信息、不考虑继承子类问题。2、instanceof进行类型考虑该类的子类关系。...
  • sunrui200009
  • sunrui200009
  • 2018-03-13 10:13:04
  • 5

ParameterizedType getGenericSuperclass 获取泛型参数;class getClass区别

泛型的好处:     泛型的主要好处就是让编译器保留参数的类型信息,执行类型检查,执行类型转换(casting)操作,编译器保证了这些类型转换(casting)的绝对无误。         /...
  • wangcong2005
  • wangcong2005
  • 2013-12-05 17:05:38
  • 2015

使用((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]的实例

import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.List; i...
  • miqi770
  • miqi770
  • 2014-01-28 10:26:01
  • 4105
收藏助手
不良信息举报
您举报文章:instanceof和getClass两种方法的区别
举报原因:
原因补充:

(最多只允许输入30个字)