Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别

Posted developer_os

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别相关的知识,希望对你有一定的参考价值。

Class.isAssignableFrom()是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的子类或接口。   
格式为:
        Class1.isAssignableFrom(Class2)   
  调用者和参数都是java.lang.Class类型。   
  而instanceof是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。  
  格式是:o instanceof TypeName     
  第一个参数是对象实例名,第二个参数是具体的类名或接口名,例如   String,InputStream。

  1. package com.bill99.pattern;  
  2.   
  3. public class AssignableTest {  
  4.       
  5.     public AssignableTest(String name) {  
  6.     }  
  7.     /** 
  8.      * 判断一个类是否是另一个类的父类 
  9.      * 是打印true 
  10.      * 否打印false 
  11.      */  
  12.     public static void testIsAssignedFrom1() {  
  13.         System.out.println("String是Object的父类:"+String.class.isAssignableFrom(Object.class));  
  14.     }  
  15.     /** 
  16.      * 判断一个类是否是另一个类的父类 
  17.      * 是打印true 
  18.      * 否打印false 
  19.      */  
  20.     public static void testIsAssignedFrom2() {  
  21.         System.out.println("Object是String的父类:"+Object.class.isAssignableFrom(String.class));  
  22.     }  
  23.     /** 
  24.      * 判断一个类是否和另一个类相同 
  25.      * 是打印true 
  26.      * 否打印false 
  27.      */  
  28.     public static void testIsAssignedFrom3() {  
  29.         System.out.println("Object和Object相同:"+Object.class.isAssignableFrom(Object.class));  
  30.     }  
  31.   
  32.     /** 
  33.      * 判断str是否是Object类的实例 
  34.      * 是打印true 
  35.      * 否打印false 
  36.      */  
  37.     public static void testInstanceOf1() {  
  38.         String str = new String();  
  39.         System.out.print("str是Object的实例:");  
  40.         System.out.println(str instanceof Object);  
  41.     }  
  42.     /** 
  43.      * 判断o是否是Object类的实例 
  44.      * 是打印true 
  45.      * 否打印false 
  46.      */  
  47.     public static void testInstanceOf2() {  
  48.         Object o = new Object();  
  49.         System.out.print("o是Object的实例:");  
  50.         System.out.println(o instanceof Object);  
  51.     }  
  52.       
  53.     public static void main(String[] args) {  
  54.         testIsAssignedFrom1();  
  55.         testIsAssignedFrom2();  
  56.         testIsAssignedFrom3();  
  57.         testInstanceOf1();  
  58.         testInstanceOf2();  
  59.     }  

以上是关于Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别的主要内容,如果未能解决你的问题,请参考以下文章

instanceof 与isAssignableFrom

Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别

Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别

Java中isAssignableFrom的用法

isAssignableFrom和instanceof的区别

isAssignableFrom ,isInstance , Instanceof() 区别