4

查看String类声明,您可以看到它扩展了Object类。

public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence

extends Object在实际上不需要的地方明确写有什么意义?

他们背后有什么合乎逻辑的原因吗?

4

2 回答 2

20

它不在官方的 oracle JDK 源代码中。你在看哪个版本?

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence

无论哪种方式,您是否extends Object在源代码中编写都不会产生影响。但请注意,如果您必须扩展另一个合法类而不是Object,您将陷入死胡同,因为 Java 不支持多重继承。

更新

OP 正在查看 API 文档中的 String 声明。Java 中的每个类都必须并且确实扩展 Object。但是,源代码是否说extends Object.

该类在源代码String中没有。extends Object但是,API 声明始终表明每个类都隐式扩展 Object。

看看源代码

于 2013-08-30T12:44:29.817 回答
3

我的猜测是您没有安装 JDK 源代码,但正在查看反编译的类文件。

在我的源文件夹中,extends Object缺少 。反编译器只会添加extends <superclass>. 但是由于在 Java 中,每个类都根据定义从 Object 派生,extends Object因此 String 类将成为这种情况。

于 2013-08-30T12:46:29.583 回答