2

私の無知を許してください、しかし、私は他の場所で答えを見つけることができませんでした.

次のコードがあります。

int value = 5;
Strategy s = new Strategy(convert(value));
mainClass.setStuff(s, value);

ストラテジーは、「値」の変換に基づく数値で初期化されます。mainClass は、変換されていない「値」を使用します。

私がやりたいことは、どの戦略を使用するか、どの未変換の値を使用するかという情報のみを mainClass に与えることによってこれを単純化することです。その後、mainClass は戦略のインスタンス化と初期化を行い、値を処理する必要があります。

C++ では、テンプレートを使用してこれを行うことができます。

int value = 5;
mainClass.setStuff<Strategy>(value);

どうにかしてJavaでこれを機能させることはできますか? C ++とは異なり、Javaは引数の型を推測できないため、ジェネリックでは機能しないようです。そのため、ストラテジーを初期化できません。

4

1 に答える 1

5

setStuffメソッドのシグネチャを に変更しpublic <T extends Strategy> ReturnType setStuff(Class<T> clazz, int value)ます。次に、正しいコンストラクターを見つけて、新しいインスタンスを作成できます。

于 2012-04-07T01:17:44.793 に答える