只有一个官方Java Language Specification,所有Java实现都必须符合它。
API文档怎么样:所有Java实现都需要遵守this version,或者实现是否可以不同地定义某些方法和类的行为,只要它与JLS兼容?
让我们举一个具体的例子:Java实现是否包含不接受HashMap
元素的null
?
答案 0 :(得分:3)
我相信,是的,是的。
仔细检查后,我认为不。
正如JLS 8在p.1.4中所述:
<强> 1.4。与预定义类和接口的关系
如上所述,此规范通常是指Java的类 SE平台API。特别是,有些课程有特殊之处 与Java编程语言的关系。例子包括 类,如Object,Class,ClassLoader,String,Thread和 java.lang.reflect包中的类和接口等。 该规范约束了这些类的行为 接口,但不提供完整的规范。 读者可以参考Java SE平台API文档。
他们一方面指出,JLS文档未提供完整的规范并将读者发送到 Java SE平台API文档。
另一方面,当提到Java SE的一些API(复数形式)时,JLS中有各种各样的地方。此外,似乎JLS不包含指向特定Java SE API规范的链接:
<强> 3.1. Unicode 强>
Java SE平台的一些API ,主要在Character类中,使用32位整数将代码点表示为单个实体。 Java SE平台提供了在16位和16位之间进行转换的方法 32位表示。
<强> 3.10.4. Character Literals 强>
字符文字只能代表UTF-16代码单元(§3.1),即 它们仅限于从\ u0000到\ uffff的值。补充 必须将字符表示为a中的代理对 char序列,或整数,取决于它们使用的API 用。强>
<强> 9.6.4. Predefined Annotation Types 强>
在Java的库中预定义了几种注释类型 SE平台。其中一些预定义的注释类型具有特殊性 语义。这些语义在本节中指定。这个部分 没有提供预定义的完整规范 这里包含的注释; 即适当的角色 API规范。只有那些需要特殊的语义 Java编译器或Java虚拟机的行为 这里指定了实现。