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
,但第一个却是报错的。
请问大佬这是为啥呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.