没有公共类的java文件

时间:2015-07-08 17:03:30

标签: java

我在eclipse中创建了一个包含修饰符的类。

class notPublic
{
  //main() which prints a string
}

我运行了这个程序并打印了那个字符串。我在这里有一个小疑问

我读到Java compilation unit must have a public class我有一个没有公共课的编译单元。但它的确有效。

我在这里错误地理解了什么

2 个答案:

答案 0 :(得分:6)

实际要求略有不同:每个Java公共类必须位于名为PublicClassName.java的编译单元中。但是有一个编译单元可以完成包含公共类。

我无法在语言规范中找到明确的声明,但the spec does seem to mention it是将Java编译单元映射到文件系统的首选/推荐方法。

答案 1 :(得分:3)

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

class A{}

class B{}

class C{}

由于任何类都是公共的,你可以使用javac Dog.java编译它,它会起作用。

但如果您的某个类是公共的,则该文件的名称必须等于公共类,例如,如果您修改最后一个示例,如下所示: 档案Dog.java

public class A{}

class B{}

class C{}

你尝试编译它你会得到“ A类是公共的,应该在名为A.java的文件中声明

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