ジェネリック オブジェクトを受け取り、別のジェネリック オブジェクト (元のクラスと同じかサブクラス) を返すメソッドのシグネチャは何ですか? つまり、メソッドがジェネリック クラスAを使用する場合、返されるオブジェクトは(直接的または間接的に) 次のいずれAかであることが保証されます。BB extends A
以下のコードは、関数で私がやろうとしていることを例示していますgetList():
package com.company;
import java.util.ArrayList;
public class Main {
private Main(){
List<String> stringList = new GenericMessageListCreator.getList(StringGenericMessage.class);
}
private class GenericMessageListCreator() {
public List<GenericMessage<T1>> getList(Class<T1 extends GenericMessage> clazz) {
return new ArrayList<T1>();
}
}
private class GenericMessage<T> {
public GenericMessage(){};
private T internalValue;
public void setValue(T value) {
this.internalValue = value;
}
public void echoValue() {
System.out.println("I contain " + internalValue);
}
}
private class StringMessage extends GenericMessage<String>{}
private class IntegerMessage extends GenericMessage<Integer>{}
}
例はさておき、実際にはCommand、コマンド パターンで s に使用されるクラスのレジストリを作成しています。Commandクラスごとにオブジェクトを取得したら、適切なものをフェッチしてオブジェクトを渡したいと思います。