これがどこかに答えがある場合は許してください。何を検索すればよいかよくわかりませんでした... また、Java と OOP をまだ学習しているため、用語がオフになっている可能性があります (宣言、インスタンス化など)。
私は教科書を読んでいました: Data Structures and Abstractions, 3rd Ed by Frank Carrano (第 20 章: 辞書の実装)、プライベート内部クラスを含む非常に標準的なクラスに出くわしました。しかし、私がよく理解していない方法論について何かがあります。
オブジェクト(またはオブジェクトの配列)を外部クラスのフィールドとして宣言し、コンストラクターで一時オブジェクトをインスタンス化し、属性をインスタンス化するだけでなく、フィールドを一時オブジェクトとして初期化する理由を理解するのに苦労していますコンストラクターでそれ自体。
編集:型パラメーターをコードに追加し直しました...辞書を使用しているため、この場合はキーと値に K & V が使用されます。それが質問にとって重要かどうかはわかりません...
ここで問題のコードを書き直し、クラスなどの名前を変更して、ローカライズされないようにしました。
public class OuterClass<K, V> implements SomeInterface<K, V>
{
private InnerClass<K, V>[] foo; // Declare array of inner class object
private final static int CAPACITY = 10; // Initial Array Capacity
// Outer Class Constructor
public OuterClass()
{
InnerClass<K, V>[] tempFoo = (InnerClass<K, V>[])new InnerClass[CAPACITY];
foo = tempFoo;
}
// ...
private class InnerClass<S, T>
{
// Inner Class Constructor
private InnerClass()
{
// ...
}
// ...
}
}
前述のように、質問に関連しているとは思わないため、コード内の特定の詳細を取り除こうとしました。外部クラスのコンストラクターでこれを行うだけではない理由はありますか:
foo = (InnerClass[])new InnerClass[CAPACITY];
それ以外の:
InnerClass[] tempFoo = (InnerClass[])new InnerClass[CAPACITY];
foo = tempFoo;