这个问题在这里已有答案:
这是我的代码:
private <T,L extends ArrayList<? extends T>> L Foo(L<T> list1) {
L list2 = new ArrayList<T>();
//more code
}
我正在使用IDEA并获取方法参数的以下错误消息:
Type 'L' does not have type parameters
以及用于创建ArrayList的以下错误消息:
Incompatible types. <br>Required: L <br> Found: java.utils.ArrayList<T>;
为什么会这样? L
扩展了ArrayList,所以它应该具有相同的类型参数吗?
目前尚不清楚ArrayList<T>
是否是L
。例如,L
可能是MyArrayListImpl<T>
。
我想这就是你想要的:
private <T> List<T> Foo(List<T> list1) {
List<T> list2 = new ArrayList<T>();
//more code
}