2

入れ子になったクラスに public コンストラクターがある場所をたくさん見てきました。問題は、なぜ/いつそれらが必要になるのかということです。プライベートコンストラクターも同じ仕事をしているように見えるので、内部/ネストされたクラスにはプライベートコンストラクターが必要であるという規則がないのはなぜですか?

オブジェクトの外側に内部クラスを構築する必要がない場合、内部クラスのコンストラクターを private と宣言するのは正しいことですか? もしそうなら、Java マップの Entry がそのコンストラクターを非公開と宣言しないのはなぜですか?

ありがとう、

4

1 に答える 1

4

そうすると、他のどこからでも内部クラスをインスタンス化できなくなります。内部クラスをインスタンス化できることは、Builder パターンで頻繁に使用されます。

House house = new House.Builder().addRoof().paint(Color.WHITE).build();

Builder のコンストラクターがプライベートの場合、複雑な状態のオブジェクトを構築するときに非常に役立つ上記のことを行うことができません。

于 2013-06-23T08:32:57.953 に答える