我有一個Executor
類,它調用接口IService<T>
和KeyList<T>
參數的實例。方法簽名中的Java泛型類型不匹配
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和密鑰列表是如何參數,但下面提出了一個編譯錯誤說法的論據是不適用的:
public void execute(){
_service.invoke(_keys); //error on invoke
}
我估計是因爲抱怨KeyList<?>
不等於KeyList<T>
,但<?>
與<? extends Object>
相同,所以我有點困惑。有更好的選擇嗎?
原始類型的工作,但想到它讓我蕁麻疹:-D,THX – raffian