JDK 文档是语言规范的一部分吗?

ass*_*ias 5 java jls

只有一个官方Java 语言规范,所有 Java 实现都必须遵守它。

API 文档如何:是否所有 Java 实现都需要遵守此版本,或者一个实现是否可以以不同方式定义某些方法和类的行为,只要它与 JLS 兼容?

让我们举一个具体的例子:Java 实现可以包含HashMap不接受null元素的 a 吗?

And*_*niy 4

我相信,是的,确实如此。

\n\n

仔细一看,我认为并非如此

\n\n

正如 JLS 8 在p.1.4中所述:

\n\n
\n

1.4. 与预定义类和接口的关系

\n\n

如上所述,该规范通常引用 Java\n SE 平台 API 的类。特别是,某些类与 Java 编程语言有着特殊的关系。示例包括 Object、Class、ClassLoader、String、Thread 等类以及 java.lang.reflect 包中的类和接口等。此规范限制了此类类和接口的行为,但没有提供完整的规范。\n 读者可参考Java SE平台API文档。

\n
\n\n

一方面,他们指出,JLS 文档没有提供完整的规范,并将读者引导至Java SE 平台 API 文档

\n\n

另一方面,JLS 中有很多地方提到了 Java SE 的一些 API(复数形式)。此外,JLS 似乎不包含特定 Java SE API 规范的链接:

\n\n
\n

3.1. 统一码

\n\n

Java SE 平台的一些 API(主要在 Character 类中)使用 32 位整数将代码点表示为单独的实体。\n Java SE 平台提供了在 16 位表示和\n 32 位表示之间进行转换的方法。

\n\n

3.10.4. 字符文字

\n\n

字符文字只能表示 UTF-16 代码单元 (\xc2\xa73.1),即,\n 它们仅限于从 \\u0000 到 \\uffff 的值。补充字符必须表示为字符序列中的代理对,或者表示为整数,具体取决于它们所使用的 API。

\n\n

9.6.4。预定义注释类型

\n\n

Java\n SE 平台的库中预定义了多种注释类型。其中一些预定义注释类型具有特殊\n 语义。这些语义在本节中指定。本节不提供此处包含的预定义注释的完整规范;这就是适当\n API 规范的作用。此处仅指定那些需要 Java 编译器或 Java 虚拟机实现的特殊行为的语义。

\n
\n