這裏不同的預期返回類型的一些代碼我工作的一個例子:Java泛型 - 比實際
public interface FooMaker<T extends Enum<T> & FooType>
{
public List<Foo<T>> getFoos(String bar);
}
讓我們進一步假設會有FooMaker許多不同的具體實現。所以我寫了一些代碼來利用FooMakers。
FooMaker<?> maker = Foos.getRandomMaker();
List<Foo<?>> fooList = maker.getFoos("bar"); //error here!
的第二行代碼導致該問題,日食告訴我的代碼應該是:
FooMaker<?> maker = Foos.getRandomMaker();
List<?> fooList = maker.getFoos("bar");
我無法理解爲什麼富的聲明中列出的參數化類型已去爲了使返回類型正確。
任何想法?
'T擴展Enum&FooType'是什麼? T必須是枚舉並擴展FooType,但是不能擴展枚舉! –
2010-10-26 13:37:19
使用泛型時,關鍵字「extends」用於描述實現的接口。 FooType也是一個接口,你仍然可以使用extends關鍵字。 – Nick 2010-10-26 15:01:32