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

时间:2017-04-26 08:53:41

标签: java jls

只有一个官方Java Language Specification,所有Java实现都必须符合它。

API文档怎么样:所有Java实现都需要遵守this version,或者实现是否可以不同地定义某些方法和类的行为,只要它与JLS兼容?

让我们举一个具体的例子:Java实现是否包含不接受HashMap元素的null

1 个答案:

答案 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虚拟机的行为   这里指定了实现。