class A {} class B extends A {} public class Test { public static void main(String[] args) { B b = new B(); A a = new A(); // System.out.println(b.getClass() == A.class); //报错 1 // System.out.println(b.getClass() == a.getClass()); // false 2 System.out.println(b.getClass() == B.class); // true 3 } } 为什么 1 这个位置会产生报错呢?b.getClass() 得到的结果是 class B,而 A.class得到的结果是 class A,== 不是可以比较两个具有父子关系的两个对象吗?而 B 和 A 是有继承关系的呀。按我理解结果应该是 false ,但是编译器给出的结果却是报错,不太理解。
第 2 个位置b.getClass() 得到的结果是class B,a.getClass() 得到的结果是class A,得出的结果是 false ,这个和第 1 个位置有什么不同呢?第 1 个位置和第 2 个位置结果都是class A 和 class B,但第一个却是报错的。
请问大佬这是为啥呢?
