Java isAssignableFrom()方法与instanceof()方法区别

isAssignableFrom

用来判断一个类Class1是否与另一个类Class2相同,或者Class1是否是Class2的超类或接口;
格式是:
Class1.isAssignableFrom(Class2);
第一个参数是类对象,第二个参数也是类对象;
如何调用呢,例子如下:

Class parent = java.io.InputStream.class;
Class child = java.io.FileInputStream.class;
System.out.println(parent.isAssignableFrom(child));
System.out.println(child.isAssignableFrom(parent));


输出结果是:
true
false

public class AssignableTest {
 /**
  * isAssignableFrom()方法是从类继承的角度去判断,instanceof()方法是从实例继承的角度去判断。
  * isAssignableFrom()方法是判断是否为某个类的父类,instanceof()方法是判断是否某个类的子类。
  */
 public static void main(String[] args) {
    //isAssignableFromTest();
    isInstanceofTest();
 }
 static void isInstanceofTest() {
    String strValue = "abc";
    Object object = new Object();
    System.out.println(strValue instanceof Object); // true
    System.out.println(object instanceof  Object); // true
 }
  static void isAssignableFromTest() {
    List<Object> srcValue = new ArrayList();
    Set<Object> srcValue2 = new HashSet<>();
    System.out.println("Collection是List的父类:" + Collection.class.isAssignableFrom(srcValue.getClass()));// Collection是List的父类:true
    System.out.println("List与List相同:" + List.class.isAssignableFrom(srcValue.getClass()));              // List与List相同:true
    System.out.println("Collection是Set的父类:" + Collection.class.isAssignableFrom(srcValue2.getClass())); // Collection是Set的父类:true
    System.out.println("List是Set的父类:" + List.class.isAssignableFrom(srcValue2.getClass())); // List是Set的父类:false
 }
}

instanceof

用来判断一个对象实例obj是否是另一个类或接口的实例;
格式是:
obj instanceof ClassName
第一个参数是实例对象,第二个参数是类名;

总结


由此可以知道,
instanceof是子->父的过程;
isAssignableFrom是父->子的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿啄debugIT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值