isAssignableFrom 用法为:Class1.class.isAssignableFrom(Class2.class)
表示为:Class1和Class2之间的关系;
如果 Class1与Class2 相同 或者Class1是Class2的 超类或者接口 则返回的true 否则为false;
[Class1.class 表示的是Class1的Class对象 虚拟机一开始的时候不加载这个类[Class1] 当第一次使用这个类[Class1]时候,才会加载这个类的方法 静态变量等信息,生成Class1的Class对象,Class1.class会生成Class1的Class的引用,不会自动地初始化该Class1对象产生实例对象,]
例如:
public interface Move {
}
public abstract class People implements Move{
}
public class Teacher extends People{
}
public class MiddleSchoolTeacher extends Teacher{
}
System.out.println(MiddleSchoolTeacher.class.isAssignableFrom(Move.class)); //false
System.out.println(Move.class.isAssignableFrom(MiddleSchoolTeacher.class)); //true
System.out.println(People.class.isAssignableFrom(MiddleSchoolTeacher.class)); //true
System.out.println(Teacher.class.isAssignableFrom(MiddleSchoolTeacher.class)); //true
System.out.println(MiddleSchoolTeacher.class.isAssignableFrom(MiddleSchoolTeacher.class));//true
System.out.println(Move.class.isAssignableFrom(People.class));//true
System.out.println(Move.class.isAssignableFrom(Teacher.class)); //true
System.out.println(Move.class.isAssignableFrom(Move.class)); //true
System.out.println(People.class.isAssignableFrom(Teacher.class));//true
instance of 运算符 表示的是 左边的 引用实例对象是否是右边 类 接口 抽象类的实例