这里不同的预期返回类型的一些代码我工作的一个例子: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