List
はジェネリックで定義されています。このリストのすべての要素は、インタフェースTransferableData
を定義します。最終的にリストを作成するオブジェクトに応じて、データで何かを行うメソッドを呼び出す必要があります。ジェネリックリストエレメントのタイプに基づいたメソッドの呼び出し
private <T extends TransferableData> String doSomething(List<T> data, Class<T> dataType){
if(returnType.equals(A.class)){
for(T singleElement : data){
((A)singleElement).methodInsideA();
}
}else if(returnType.equals(B.class)){
for(T singleElement : data){
((B)singleElement).methodInsideB();
}
}
}
私は、これはこれを行う方法はありませんことを実現:
は、だから私はこのような何かをアーカイブします。私はちょうどすべてのif-elseとチェックされていないキャスティングがなければ、適切な方法を見つけることができません。
必要なものは、異なるデザインアプローチである - Strategyパターンの方向に少し見えます。 – Stefan
'TransferableData'でそのメソッドを宣言し、各リスト要素のメソッド内で非条件付きで呼び出すだけで、具体的なクラスで望みどおりに実装するのはなぜですか? – Mena
'returnType'を書いたところで' dataType'を書いたのですか? – erickson