天天看点

1分钟彻底理解isInstance

如下节选自jdk1.6的api:

isInstance

public boolean isInstance(Object obj)

判定指定的 Object 是否与此 Class 所表示的对象赋值兼容。此方法是 Java 语言 instanceof 运算符的动态等效方法。

如果指定的 Object 参数非空,且能够在不引发 ClassCastException 的情况下被强制转换成该 Class 对象所表示的引用类型,则该方法返回 true;否则返回 false。

特别地,当该 Class 对象表示一个已声明的类时,若指定的 Object 参数是所表示类(或其任一子类)的一个实例,则此方法返回 true;否则返回 false。

如果此 Class 对象表示一个数组类,且通过身份转换或扩展引用转换,指定的 Object 参数能转换为一个数组类的对象,则返回 true;否则返回 false。如果此 Class 对象表示一个接口,且指定 Object 参数的类或任一超类实现了此接口,则此方法返回 true;否则返回 false。

如果此 Class 对象表示一个基本类型,则此方法返回 false。

参数:

obj - 要检查的对象

返回:

如果 obj 是此类的实例,则返回 true

注意红色标注部分:

1.与 instanceof 运算符等效,只是用法有区别而已

2.obj为null,直接返回false;本方法与 强制转换 或 class.cast(Object obj) 转换结合在一起使用

if(Person.class.isInstance(obj)){
    Person temp = Person.class.cast(obj);
}
           

3.isInstance方法适用于对象,不适用于基本类型

版权声明:本文为CSDN博主「weixin_34269583」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_34269583/article/details/92298269