1

我正在学习 Java,刚刚遇到 2 条指令:

  1. 一个类必须有一个匹配的文件名
  2. 请记住,java文件的名称应该与类名匹配

问:

应该在 (2) 中LIKEDIFFERENT 必须在 (1) 中?-> (1), (2)。

什么是正确的??

4

2 回答 2

2

正如评论中提到的,这并不像最初看起来那么清楚,部分原因是 JLS 不需要将包存储在文件系统中:

7.6. 顶级类型声明

当且仅当包存储在文件系统中(第 7.2 节)时,如果在由类型名称组成的名称下的文件中未找到类型,则主机系统可能会选择强制执行它是编译时错误的限制如果满足以下任一条件,则加上扩展名(例如 .java 或 .jav):
[...]

所以你的答案基本上是:

可能是“必须的”,具体取决于您的编译器。

于 2018-12-20T14:18:05.000 回答
2

完全准确地说:

  • 公共课 X必须参加X.java(请参阅用户 Hulk 的“必须”的好答案)
  • 除此之外,非公共类 Y、Z应该存在于Y.javaand中Z.java,但它们可以进入 X.java

例如,谷歌编码标准强调了第二条规则。每个文件应该有一个顶级类,然后类名应该与文件名匹配。

做任何其他事情很可能会让任何有经验的 Java 程序员感到困惑。让你的读者感到困惑总是一个坏主意。

于 2018-12-20T14:20:33.413 回答