作用
判断当前类/接口的类对象是否为参数中类对象的相同类/父类/父接口。
源码
// Class.java
public native boolean isAssignableFrom(Class<?> cls);
示例
A.class.isAssignableFrom(B.class)
本质上实在判断能否进行下面的赋值操作:
A a = new B();
示例1:以 Long 为例
Long 类的父类和接口,源码是:
public final class Long extends Number
implements Comparable<Long>, Constable, ConstantDesc
代码测试1:
@Test
public void test_isAssignableFrom() {
System.out.println(Number.class.isAssignableFrom(Long.class));
// 以上代码输出: true
System.out.println(Long.class.isAssignableFrom(Long.class));
// 以上代码输出: true
System.out.println(Long.class.isAssignableFrom(Number.class));
// 以上代码输出: false
System.out.println(Comparable.class.isAssignableFrom(Long.class));
// 以上代码输出: true
System.out.println(Comparable.class.isAssignableFrom(Comparable.class));
// 以上代码输出: true
System.out.println(Long.class.isAssignableFrom(Comparable.class));
// 以上代码输出: false
}
代码测试2:
@Test
public void test_isAssignableFrom() {
Long num = 0L;
Object obj = num;
System.out.println(obj.getClass().isAssignableFrom(Long.class));
// 以上代码输出: true
System.out.println(obj.getClass().isAssignableFrom(Number.class));
// 以上代码输出: false
System.out.println(obj.getClass().isAssignableFrom(Integer.class));
// 以上代码输出: false
}