[英]instanceof vs isInstance()
class A{
public A(){
System.out.println("in A");
}
}
public class SampleClass{
public static void main(String[] args) {
A a = new A();
System.out.println(A.class.isInstance(a.getClass()));
}
}
输出:
false
为什么这是假的? A.class
和a.getClass()
都不应该返回同一个类!
在什么条件下我们将从isInstance()
方法中获得真实的结果?
因为a.getClass()
返回Class<A>
,但是你应该传入一个A
:
System.out.println(A.class.isInstance(a));
如果您有两个Class
实例并想要检查赋值兼容性,那么您需要使用isAssignableFrom()
:
System.out.println(A.class.isAssignableFrom(Object.class)); // false
System.out.println(Object.class.isAssignableFrom(A.class)); // true
因为a.getClass()
返回的类型是Class<? extends A>
Class<? extends A>
,而不是A
A.class.isInstance
测试的是传递的对象是否具有类型A
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.