关于instanceof、isinstance和isAssignableFrom的区别

import java.util.ArrayList;
public class Test{
            public static void main(String[] args){
                        //instanceof运算符用于判断左边的对象 是不是 右边类或接口的 实例化,如果是则返回true,比如:自身实例或子类实例 instanceof 自身类  返回true。
                        String str1=new String("instanceof");
                        System.out.println(str1 instanceof String);//true
 
                       //Class类的isInstance(Object obj)方法:如果传入的参数是调用该方法的类或接口的实例,则返回true。这个方法是instanceof运算符的动态等价,比如:自身类.class.isInstance(自身实例或子类实例)则返回true。
                       String str2=new String("instanceof");
                       System.out.println(String.class.isInstance(str2));//true 
 
                      //Class类的isAssignableFrom(Class clazz)方法:如果调用这个方法的类或接口 与传入该方法的参数(类或接口)相同,或者调用这个方法的类或接口是传入该方法的参数(类或接口)的父类,则返回true,比如:自身类.class.isAssignableFrom(自身类或子类.class)则返回true
                      System.out.println(Object.class.isAssignableFrom(ArrayList.class));//true
            }
}

你可能感兴趣的:(Java)