以下のコード例では、クラス Test 内の Test() コンストラクターは public ですが、クラス Test 自体は public ではないため、Test() コンストラクターを自身のパッケージの外から呼び出すことはできません。
それは public キーワードを冗長にしますか? もしそうなら、アクセスが暗黙的にデフォルトとして宣言されているクラス (「パッケージ プライベート」) 内で使用されている場合、javac が public の冗長な使用に関する警告を発行しないのはなぜでしょうか?
Test.java、パッケージ テスト -
package test;
class Test {
public Test() {}
}
Main.java、パッケージメイン -
package main;
class Main {
public static void main(String[] args) {
new test.Test(); // Expected error
}
}
編集:
明確にするために、警告が表示されないのは、Test.java をコンパイルするときです。