回答:
Class
が別のものを拡張するかどうかを知りたい場合は、Class#isAssignableFrom(Class)を使用してください。あなたの例では、それは:
if(B.class.isAssignableFrom(A.class)) { ... }
インスタンスが特定のタイプであるかどうかに関心がある場合は、次を使用しますinstanceof
。
A obj = new A();
if(obj instanceof B) { ... }
これらはtrue
、クラス/インスタンスがタイプ階層のメンバーであり、スーパークラス/サブクラスの関係を指示することに限定されていない場合に返されることに注意してください。例えば:
// if A.class extends B.class, and B.class extends C.class
C.class.isAssignableFrom(A.class); // evaluates to true
// ...and...
new A() instanceof C; // evaluates to true