引数を持つインターフェイスExecutorのインスタンスを呼び出すクラスがあります。IService<T>KeyList<T>
class Executor{
KeyList<?> _keys;
IService<?> _service;
public Executor(IService<?> service, KeyList<?> keys){
_service = service;
_keys = keys;
}
public void execute(){
_service.invoke(_keys);
}
}
interface IService<T>{
public void invoke( KeyList<T> keys);
}
class KeyList<T> {
List<T> _list;
}
<?>IService と KeyList がどのようにパラメーター化されているかは気にしないため、Executor のメンバーに使用しましたが、次の例では引数が適用できないというコンパイル エラーが発生します。
public void execute(){
_service.invoke(_keys); //error on invoke
}
KeyList<?>が と等しくないので文句を言っていると思いますKeyList<T>が<?>、 と同じな<? extends Object>ので、少し混乱しています。より良い代替手段はありますか?