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()方法中得到正确的结果?
发布于 2012-06-08 15:08:52
因为a.getClass()返回Class<A>,而you should pass in an 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发布于 2012-06-08 15:08:59
因为a.getClass()返回的类型是Class<? extends A>,而不是A。
A.class.isInstance测试的是传递的对象是否具有A类型。
https://stackoverflow.com/questions/10944448
复制相似问题