クラスEmployee
とクラスがありBuilding
ます。
これらのクラスは、クラス階層の観点からは相互に関連していません。
たくさんのオブジェクトを処理する必要がありEmployee
、Building
それらの結果は異なるリストになります。
だから私は持っていて、例えばインターフェース
public interface Processor{
public void process(String s, List<?> result);
}
文字列には、またはのs
いずれかに関連する情報が含まれ、何らかの処理が行われた後の実装によって、オブジェクトまたはオブジェクトのいずれかが結果リストに追加されます。1つのisとa
の2つの実装があります。
コードのどこかで、これらのいずれかへの参照を取得し、aまたはaのいずれかをメソッドに渡します。 Employee
Building
Employee
Building
Processor
EmployeeProcessor
BuildingProcessor
List<Employee>
List<Building>
process
問題は、コードがコンパイルされないことです。
私が例えば内部で行うときEmployeeProcessor
:result.add(new Employee(a,b,c,d));
私は得る:
List型のメソッドadd(capture#2-of?)は、引数には適用できません。
問題は理解できると思いますが、インターフェイスを次のように変更したくありません。
public interface Processor{
public process(String s, List result);
}
つまり、リストのタイプを指定しません。
この問題を回避する方法はありますか?インターフェイスの定義が間違っていますか?
注:このインターフェースはCommand
パターンの実装の一部です