Class的isAssignableFrom详解

1:方法介绍

isAssignableFrom方法是java.lang.Class类中的一个native方法,如下:

java.lang.Class#isAssignableFrom
public native boolean isAssignableFrom(Class cls);

当前Class对象如果是参数Class对象的父类,父接口,或者是相同,都会返回true

2:具体使用

父类:

public class FatherCls {
}

2.1:和自己比较

  • 测试
// 同类型的情况
FatherCls fatherClsInstance = new FatherCls();
System.out.println("同类型测试:");
System.out.println(FatherCls.class.isAssignableFrom(fatherClsInstance.getClass()));
  • 输出
同类型测试:
true

2.2:和自己儿子比较

  • 定义子类
public class FatherSonCls extends FatherCls {
}
  • 测试代码
FatherSonCls fatherSonClsInstance = new FatherSonCls();
System.out.println("测试自己的子类");
System.out.println(FatherCls.class.isAssignableFrom(fatherSonClsInstance.getClass()));
  • 测试输出
测试自己的子类
true

2.3:和自己儿子的儿子比较

  • 定义儿子的儿子
public class FatherSonSonCls extends FatherCls {
}
  • 测试代码
System.out.println("测试自己子类的子类");
FatherSonSonCls fatherSonSonClsInstance = new FatherSonSonCls();
System.out.println(FatherCls.class.isAssignableFrom(fatherSonSonClsInstance.getClass()));
  • 测试输出
测试自己子类的子类
true

2.4:和自己父类比较

  • 测试代码
System.out.println("测试自己父类");
FatherCls fatherCls1Instance = new FatherCls();
System.out.println(FatherSonCls.class.isAssignableFrom(fatherCls1Instance.getClass()));
  • 测试输出
测试自己父类
false

2.5:和自己没有关系的比较

  • 测试代码
System.out.println("测试没有任何关系的类");
OtherCls otherClsInstance = new OtherCls();
System.out.println(FatherCls.class.isAssignableFrom(otherClsInstance.getClass()));
  • 测试输出
测试没有任何关系的类
false

最后:都让开,我要喝瑞幸

在这里插入图片描述

你可能感兴趣的:(杂,java,class)