instanceof, isinstance,isAssignableFrom的区别

instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。 
形象地:自身实例或子类实例 instanceof 自身类  返回true 
例: String s=new String("javaisland"); 
      System.out.println(s instanceof String); //true

Class类的isInstance(Object obj)方法,obj是被测试的对象,如果obj是调用这个方法的class或接口 的实例,则返回true。这个方法是instanceof运算符的动态等价。 
形象地:自身类.class.isInstance(自身实例或子类实例)  返回true 
例:String s=new String("javaisland"); 
      System.out.println(String.class.isInstance(s)); //true

Class类的isAssignableFrom(Class cls)方法,如果调用这个方法的class或接口 与 参数cls表示的类或接口相同,或者是参数cls表示的类或接口的父类,则返回true。 
形象地:自身类.class.isAssignableFrom(自身类或子类.class)  返回true 
例:System.out.println(ArrayList.class.isAssignableFrom(Object.class));  //false 
      System.out.println(Object.class.isAssignableFrom(ArrayList.class));  //true

时间: 2024-08-26 08:00:25

instanceof, isinstance,isAssignableFrom的区别的相关文章

java中instanceof和getClass()的区别分析

本篇文章介绍了,在java中instanceof和getClass()的区别分析.需要的朋友参考下 class A { } class B extends A { } Object o1 = new A();  Object o2 = new B(); o1 instanceof A => true  o1 instanceof B => false  o2 instanceof A => true // <================ HERE  o2 instanceof

isInstance、isAssignableFrom与instanceof 的使用与区别

isInstance的参数为对象.例:调用者.getClass().isInstance(调用者本身或者父类接口的实例[object除外])返回true,反之false isAssignableFrom的参数为class,例:调用者.getClass().isAssignableFrom(调用者本身或者子类的class)返回true,反之false

类方法isAssignableFrom、instanceof和asSubclass的区别及实例

isAssignableFrom public boolean isAssignableFrom(Class if (List.class.isAssignableFrom(ArrayList.class)) { System.out.println("list is assignable from arraylist"); } if (ArrayList.class.isAssignableFrom(List.class)) { System.out.println("ar

instanceof 与isAssignableFrom

instanceof 针对实例 isAssignableFrom针对class对象 isAssignableFrom   是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口.   通常调用格式是 Java代码   Class1.isAssignableFrom(Class2) 调用者和参数都是   Java.lang.Class   类型.           而   instanceof   是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例.   

(十一)instanceof 和 getclass 的区别

判断两个对象是否为同一类型,时常用到getclass 和 instanceof ,而这两个函数又是时常让人混淆.下面从一个例子说明两者的区别: public class Test_drive { public static void main(String[] args){ A a = new A(); B b = new B(); System.out.println(b.getClass().equals(A.class)); System.out.println(b.getClass().

JavaScript instanceof和typeof的区别

引用自:   http://www.cnblogs.com/eoiioe/archive/2008/12/31/1366081.html instanceof和typeof都能用来判断一个变量是否为空或是什么类型的变量.  typeof 用来获取一个变量的类型,typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefined.  我们可以使用 typeof 来获取一个变量是否存在,如if(typeof a!="undefined

JDK函数二 instanceof与isAssignableFrom

instanceof是子是父的子,即时后面接口实现类或者子类的实例 List<String> list=new ArrayList<String>(); System.out.println(list instanceof List); 上面结果是true isAssignableFrom是父是子的父,即前面的class是后面的超类或者接口 System.out.println(List.class.isAssignableFrom(list.getClass())); 上面结果是

Pytthon:type函数和 isinstance 函数及区别

Python中,type和isinstance都可以进行类型检查,用的最多的就是type()了(其实我是一直用type()).内建函数type(object)用于返回当前对象的类型,比如type(1)返回<type 'int'>.因此可以通过与python自带模块types中所定义的名称进行比较,根据其返回值确定变量类型是否符合要求.例如判读一个变量a是不是list类型,可以使用以下代码: if type(a) is types.ListType: 所有的基本类型对应的名称都可以在types模

js中instanceof与typeof的区别以及instanceof的门道

js中判断值类型,你可以通过typeof判断,string/number/boolean都很清楚,但是typeof在判断到引用类型的时候,返回值只有object/function,你不知道它到底是一个object对象,还是数组,还是new Number等等. 这个时候就需要用到instanceof:比如在 a  instanceOf f中沿着a的__proto__这条线来找,同时沿着B的prototype这条线来找,如果两条线能找到同一个引用,即同一个对象,那么就返回true.如果找到终点还未重