繁体   English   中英

instanceof vs isInstance()

[英]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.classa.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM