これの間に実際の違いはありますか
public class OuterClass {
private class InnerClass {
public InnerClass() {}
}
}
この?
public class OuterClass {
private class InnerClass {
private InnerClass() {}
}
}
これの間に実際の違いはありますか
public class OuterClass {
private class InnerClass {
public InnerClass() {}
}
}
この?
public class OuterClass {
private class InnerClass {
private InnerClass() {}
}
}
JVM では実際にはこれが許可されていないため、別のクラスからプライベート メンバーにアクセスするのは少し複雑です。その結果、コンパイラはアクセサ メソッドを挿入するため、処理が少し遅くなったり、スタック トレースがより複雑になったりします。
これらの理由から、パッケージ ローカルのままにします。
ところで、のコンストラクターはどちらかabstract class
である必要はありませんpublic
。protected
ローカルまたはパッケージ化することもできます
private static class A {
private A() {
throw new Error();
}
}
public static void main(String... ignored) {
new A();
}
追加のスタック トレース要素を出力します。
Exception in thread "main" java.lang.Error
at Main$A.<init>(Main.java:8)
at Main$A.<init>(Main.java:6)
at Main.main(Main.java:12)
コンストラクター パッケージをローカルにすると、2 番目のパッケージが消えます。