我有一个接口A
,该类B
实现。
以下通用方法有效
public static <T, U extends T> List<T> listFactory(Collection<U> source) {
return new ArrayList<T>(source);
}
但
public static <T> List<T> listFactory(Collection<? extends T> source) {
return new ArrayList<T>(source);
}
没有(编译错误,类型不匹配),当我将输出定向到
List<A> tester = listFactory(B.defaultCollectionFactory(3));
defaultCollectionFactory(int count)
静态提供B
s 的集合,带有默认的标签方案。
关于为什么会这样的任何见解?似乎通用 U 和通配符在做同样的事情。