B extends B1, B1 extends B2, ... Bn extends A
B b = new B();
A a = new A();
A =>的实例真正, b instanceof A =>真
但我想知道A的直接实例。
答案 0 :(得分:4)
为什么不与班级比较?
public class ClassTest {
class A{
}
class B extends A{
}
public static void main(String[] args) {
ClassTest t = new ClassTest();
A a = t.new B();
System.out.println(a instanceof B); //true
System.out.println(a instanceof A); //true
System.out.println(a.getClass().equals(B.class)); //true
System.out.println(a.getClass().equals(A.class)); //false
}
}
答案 1 :(得分:1)
您可以使用A.getClass()来获取对象的Class名称。获得类名后,可以构建directInstance逻辑
答案 2 :(得分:0)
您可以检查您的对象是否与A.class
具有相同的类对象。
A a = new A();
B b = new B();
System.out.println(a.getClass().equals(A.class)); //will display true
System.out.println(b.getClass().equals(A.class)); //will display false