Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有公共类的java文件_Java - Fatal编程技术网

没有公共类的java文件

没有公共类的java文件,java,Java,我在eclipse中创建了一个带有包修饰符的类 class notPublic { //main() which prints a string } 我运行了这个程序,它被打印成了字符串。我有点怀疑 我读到Java编译单元必须有一个公共类我有一个没有公共类的编译单元。但它是有效的 我在这里理解错误了什么实际需求略有不同:每个Java公共类都必须位于一个名为PublicClassName.Java的编译单元中,但拥有一个不包含公共类的编译单元是完全正确的 我无法在语言规范中找到这方面的明确声

我在eclipse中创建了一个带有包修饰符的类

class notPublic
{
  //main() which prints a string
}
我运行了这个程序,它被打印成了字符串。我有点怀疑

我读到
Java编译单元必须有一个公共类
我有一个没有公共类的编译单元。但它是有效的


我在这里理解错误了什么

实际需求略有不同:每个Java公共类都必须位于一个名为
PublicClassName.Java的编译单元中
,但拥有一个不包含公共类的编译单元是完全正确的


我无法在语言规范中找到这方面的明确声明,但作为将Java编译单元映射到文件系统的首选/推荐方法。

它在下一种方式中起作用,假设您有一个名为Dog.Java的文件,其中包含以下内容:

class A{}

class B{}

class C{}
因为任何类都是公共的,所以您可以使用javacdog.java编译它,它就可以工作了

但是,如果您的一个类是public,则文件名必须等于public类,例如,如果您修改最后一个示例,如下所示: 文件
Dog.java

public class A{}

class B{}

class C{}
如果您尝试编译它,您将得到“类A是公共的,应该在名为A.java的文件中声明”

最后一点,您不能将所有类都设置为公共类,因为每个文件只能有一个公共类