即使文件名不同,javac也会使用默认访问修饰符编译类

时间:2013-07-05 19:00:28

标签: java javac

为什么javac使用默认修饰符编译类,即使文件名不同,当访问修饰符是公共的,私有的还是受保护的时,为什么不编译? 例如:文件名:测试     文件内容     class foo {}

它被编译没有错误,如果我添加公共,私有或受保护的类前面它没有被编译可以任何人解释为什么它如此

1 个答案:

答案 0 :(得分:2)

有两条规则

  • 如果您将类型声明为public,那么文件名应该是同一类型,可以是classinterface
  • 不能有privateprotected外层。

为什么第一点的答案是它是java规范的定义方式。 您不能将外部类声明为私有,因为它根本不会服务于任何目的。

  • 您可以根据需要在源文件中包含类型,但只能有一种公共类型,如果有公共类型,则文件名必须与公共类型匹配。