应该或必须在 Java 文件名中
Should or Must in Java file name
我正在学习 Java 并且刚遇到 2 条指令:
- A class 必须具有匹配的文件名
- 请记住 java 文件的名称 应该 与 class 名称
匹配
提问:
应该 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.java
和Z.java
,但是他们可以也可以进入X.java
例如,Google 编码标准强调了第二条规则。每个文件应该有一个顶级 class,然后 class 名称应该与文件名匹配。
做任何其他事情很可能会让任何有经验的 Java 程序员感到困惑。混淆你的读者总是一个坏主意。
我正在学习 Java 并且刚遇到 2 条指令:
- A class 必须具有匹配的文件名
- 请记住 java 文件的名称 应该 与 class 名称 匹配
提问:
应该 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.java
和Z.java
,但是他们可以也可以进入X.java
例如,Google 编码标准强调了第二条规则。每个文件应该有一个顶级 class,然后 class 名称应该与文件名匹配。
做任何其他事情很可能会让任何有经验的 Java 程序员感到困惑。混淆你的读者总是一个坏主意。