私は、正確な引数の型(別名T
)が必要な機能のいくつ持っている:私はこのようにそれらを使用不明なタイプのインスタンスを作成するには?
private <T> void doWork1(T _obj) {...}
private <T> void doWork2(T _obj) {...}
private <T> void doWork3(T _obj) {...}
をし、それが正常に動作します:
public void parse(int id) {
switch (id) {
case 1: {
Integer obj = new Integer(1);
doWork1(obj);
doWork2(obj);
doWork3(obj);
break;
}
case 2: {
Double obj = new Double(2);
doWork1(obj);
doWork2(obj);
doWork3(obj);
break;
}
case 3: {
CustomClass obj = new CustomClass();
doWork1(obj);
doWork2(obj);
doWork3(obj);
break;
}
}
}
しかし、私はそれが可能かどう思っていましたコードをより簡潔にしてください。つまり、UnknownType
の代わりに何を入れる必要がありますか?
編集:
1)簡略化した例としてInteger
とDouble
を使用しました。実際のコードではカスタムクラスを使用しています。
2)私は事前にObject
おかげ
doWork1がオブジェクトを受け入れる場合は、Objectを使用します。あなたの質問は、doWork1のパラメータがどのように構造化されているか(過負荷か、ただ一つの関数か)によって決まります。 –
@JFMeierこれは、 'T'が無制限であるためです。 –
メソッドの正確な型を知る必要がある場合は、メソッドにパラメータとして 'Class'を渡す必要があります。 –