Java文件命名限制



事实上,我正在阅读Java语言规范,发现了一个奇怪的句子,我无法从中得出结论。因为我不是以英语为母语的人。

如果且仅当包存储在文件系统中(§7.2(,则主机系统可以如果找不到类型,则选择强制限制它是编译时错误在由类型名和扩展名(如.java(组成的名称下的文件中或.jav(,如果以下任一项为真:
•该类型由包的其他编译单元中的代码引用,其中类型被声明
•该类型被声明为公共类型(因此可以从代码中访问在其他包中(。

有人能举个例子来解释用粗体标记的那一行吗。提前谢谢。

在Java中,编译单元本质上是一个文件。

如果您声明的类型(例如类(在另一个文件中使用,而不是在其中声明的(通常情况下(,那么如果找不到以类型名称+扩展名命名的文件,则是编译错误。

例如:当导入一个类或其他类型时,Java必须能够将其包+名称转换为必须存在的文件名。

com.example中有类CustomObject

package com.example;
public class CustomObject {
String firstName;
String lastName;
}

该类可以从同一包中的另一个类访问。注意,由于CustomObject是公共类,因此可以从项目中的任何类访问。如果它被声明为class CustomObject,那么它只能在包com.example中访问

package com.example;
public class Test {

public CustomObject myObject; 

public static void main(String[] args) {
myObject = new CustomObject();

}
}

最新更新