应该或必须在 Java 文件名中

Should or Must in Java file name

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

  1. A class 必须具有匹配的文件名
  2. 请记住 java 文件的名称 应该 与 class 名称
  3. 匹配

提问:

应该 in (2) LIKE or DIFFERENT 必须 in (1) ?? -> (1), (2).

什么是正确的??

如评论中所述,这并不像一开始看起来那么清楚,部分原因是 JLS 不需要将包存储在文件系统中:

7.6. Top Level Type Declarations :

If and only if packages are stored in a file system (§7.2), the host system may choose to enforce the restriction that it is a compile-time error if a type is not found in a file under a name composed of the type name plus an extension (such as .java or .jav) if either of the following is true:
[...]

所以你的答案基本上是:

根据您的编译器,它可能是"must"。

准确地说:

  • A public class X 必须坐在 X.java 中(请参阅用户 Hulk 对此 "must" 的精彩回答)
  • 除此之外,非public class是Y,Z 应该住在Y.javaZ.java,但是他们可以也可以进入X.java

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

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