当具有默认访问权限的类包含公共成员时,javac不会发出警告
关于下面的示例代码,尽管类测试中的Test()构造函数是公共的,但类测试本身不是公共的,因此不能从自己的包外部调用Test()构造函数 这会使public关键字变得多余吗?如果是这样,我想知道为什么javac在访问被隐式声明为默认(“包私有”)的类中使用public时,没有发出关于冗余使用public的警告 java,包测试-当具有默认访问权限的类包含公共成员时,javac不会发出警告,java,package,class-visibility,Java,Package,Class Visibility,关于下面的示例代码,尽管类测试中的Test()构造函数是公共的,但类测试本身不是公共的,因此不能从自己的包外部调用Test()构造函数 这会使public关键字变得多余吗?如果是这样,我想知道为什么javac在访问被隐式声明为默认(“包私有”)的类中使用public时,没有发出关于冗余使用public的警告 java,包测试- package test; class Test { public Test() {} } java,包Main- package main; class Ma
package test;
class Test {
public Test() {}
}
java,包Main-
package main;
class Main {
public static void main(String[] args) {
new test.Test(); // Expected error
}
}
编辑:
需要明确的是:当我编译Test.java时,我没有收到任何警告。用户对我的原始帖子的评论帮助我解决了这个问题:我现在意识到IDE会提供我想要的信息,而仅仅使用javac本身不会。谢谢。真的吗?它向我显示了错误。@错误404,我编辑了我的O.P.,以明确我在编译Test.java时没有收到任何警告。您使用的是IDE吗?@WhoAmI,没有。我使用的是命令提示符shell和javac编译器。可以修改编译器设置,将这些情况标记为“警告”、“错误”或“正确”。在eclipse中,您可以转到属性-->Java编译器-->错误/警告来更改这些设置