コンストラクターで現在初期化されているクラスがprivate List<String> children;
ありますが、これは必ずしも必要ではなく、他の関数が必要とする場合にのみ初期化したいと思います。
重要なのは、多くのコードを変更せずに現在の実装を作り直すことです。
私は他の言語でそれを行う方法を知っていますが、Javaの知識は今のところかなり限られています。
コンストラクターで現在初期化されているクラスがprivate List<String> children;
ありますが、これは必ずしも必要ではなく、他の関数が必要とする場合にのみ初期化したいと思います。
重要なのは、多くのコードを変更せずに現在の実装を作り直すことです。
私は他の言語でそれを行う方法を知っていますが、Javaの知識は今のところかなり限られています。
それを詳しく説明すると、これはそれを達成する1つの方法です。
public class Whatever
{
private List<String> children;
public List<String> getChildren
{
if ( children == null ) { children = new ArrayList<String>(); }
return children;
}
...
}
また、例えば書くことを忘れないでください。フィールドに直接アクセスするのではなくaddChild( String child )
、'erの観点から。get
そして、あなたが本当に妄想的であるか、スレッド化された環境にいて、作成に長い時間がかかる場合は、ブロックを作成することをお勧めします synchronized
。
children
nullの場合は、ゲッターで作成できます。適切な同期に注意してください。children
作成に費用がかからず、大量のインスタンスを作成しない場合は、熱心に作成してください。手間を省きます。
これは、Java Beanの悪名高いゲッターとセッターであるアクセサー・メソッドの背後にあるデータ転送オブジェクトのメンバー変数を非表示にするJavaの一般的な方法です。これを行うと、 `List getChildren()メソッドに任意のロジック(最初の呼び出しでリストを作成する、外部クライアントに可換リストを返すなど)を追加できます。