当具有默认访问权限的类包含公共成员时,javac不会发出警告

当具有默认访问权限的类包含公共成员时,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

关于下面的示例代码,尽管类测试中的Test()构造函数是公共的,但类测试本身不是公共的,因此不能从自己的包外部调用Test()构造函数

这会使public关键字变得多余吗?如果是这样,我想知道为什么javac在访问被隐式声明为默认(“包私有”)的类中使用public时,没有发出关于冗余使用public的警告

java,包测试-

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编译器-->错误/警告来更改这些设置