5
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()そして、どの条件でメソッドから真になりますか?

4

2 に答える 2

13

a.getClass()を返すのでClass<A>、しかしあなたは:を渡す必要がありAます

System.out.println(A.class.isInstance(a));

2つのClassインスタンスがあり、割り当ての互換性を確認する場合は、次を使用する必要がありますisAssignableFrom()

System.out.println(A.class.isAssignableFrom(Object.class)); // false
System.out.println(Object.class.isAssignableFrom(A.class)); // true
于 2012-06-08T07:08:51.820 に答える
3

a.getClass()返されるものはタイプClass<? extends A>ではなく、タイプであるためAです。

A.class.isInstanceテストするのは、渡されたオブジェクトのタイプがであるかどうかですA

于 2012-06-08T07:08:59.310 に答える