isAssignableFrom和instanceof区别

Class.isAssignableFrom()方法和instanceof方法都是判断一个东西是否为另一个的类型或子类(接口及接口的实现接口也可以)

不同点在与:instanceof传的是对象,isAssignableFrom()所用的是类型的.class文件。

具体例子如下:

  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.     }  
  60. }  

 结果:

String是Object的父类:false
Object是String的父类:true
Object和Object相同:true
str是Object的实例:true
o是Object的实例:true


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值