引数を持つインターフェイス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>
ので、少し混乱しています。より良い代替手段はありますか?