Javaでジェネリッククラス内で別のジェネリッククラスをインスタンス化する方法


  1. ネストされた型パラメータを使用する方法:

    class Outer<T> {
       class Inner<U> {
           private T outerField;
           private U innerField;
    
           public Inner(T outerField, U innerField) {
               this.outerField = outerField;
               this.innerField = innerField;
           }
       }
    }
    // 使用例
    Outer<String>.Inner<Integer> instance = new Outer<>("OuterValue").new Inner<>(100);
  2. 具体的な型引数を指定する方法:

    class Outer<T> {
       class Inner {
           private T outerField;
    
           public Inner(T outerField) {
               this.outerField = outerField;
           }
       }
    }
    // 使用例
    Outer<String> outerInstance = new Outer<>("OuterValue");
    Outer<String>.Inner innerInstance = outerInstance.new Inner("InnerValue");

これらは、ジェネリッククラス内で別のジェネリッククラスをインスタンス化するための基本的な方法です。どちらの方法も有効ですが、使用する場合には状況に応じて適切なものを選択してください。