【发布时间】:2009-04-29 17:39:35
【问题描述】:
所以我们都知道所有的类都隐式地扩展了 Object。接口呢?有隐式的超级接口吗?我说有。以下代码编译:
java.io.Serializable s1 = null;
java.io.Serializable s2 = null;
s1.equals(s2);
equals 方法不是在 Serializable 中声明的,而是在 Object 中声明的。由于接口只能扩展其他接口,而 Object 是一个类,而不是接口,因此必须有一些隐式接口正在被扩展。然后Object 类必须隐式实现这个隐式接口(哇,写起来很奇怪)。
那么,问题是,这有多正确?
【问题讨论】:
-
我不明白你的论点是“必须有一些隐式接口正在被扩展”。您如何从我们在这里看到的结论中得出这个结论?
-
附带说明,此代码将抛出 NullPointerException 而无法正常工作。
-
我从未说过它会运行。我专门说它会编译。
-
完全不正确。你会发现 JLS 中没有提到超级接口。