小编Nic*_*ick的帖子

Java Generics - 预期的返回类型与实际不同

以下是我正在处理的一些代码的示例:

public interface FooMaker<T extends Enum<T> & FooType>
{
      public List<Foo<T>> getFoos(String bar);
}
Run Code Online (Sandbox Code Playgroud)

让我们进一步假设FooMaker将有许多不同的具体实现.所以我写了一些代码来使用FooMakers.

FooMaker<?> maker = Foos.getRandomMaker();
List<Foo<?>> fooList = maker.getFoos("bar");  //error here!
Run Code Online (Sandbox Code Playgroud)

第二行代码导致问题,eclipse告诉我代码应该是:

FooMaker<?> maker = Foos.getRandomMaker();
List<?> fooList = maker.getFoos("bar");
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么Foo声明作为List中的参数化类型必须消失才能使返回类型正确.

有任何想法吗?

java generics

5
推荐指数
1
解决办法
294
查看次数

标签 统计

generics ×1

java ×1