我有一个泛型方法,需要3种类型的元素,我的问题是,当我尝试编译它时 - 它失败并显示错误消息。
重复类型参数E
我无法理解这个错误,因为拥有两个不同类型的元素是完全没问题的。
public class Test {
static abstract class Test2<E, E extends MyObject> {
//At second E that extends MyObject it is failing.
}
class MyObject {
}
static <E> void m1(E e,E ee){
//Same E is working fine in case of Methods
}
public static void main(final String[] args) {
}
}
有人可以告诉我为什么这个编译失败了。
答案 0 :(得分:0)
两个通用参数都具有相同的名称E
。
使用别的东西,比如下面的cos,你会很高兴。
public class Test {
static abstract class Test2<E, T extends MyObject> {
//At E2 it is failing.
}
class MyObject {
}
public static void main(final String[] args) {
}
}
修改强> 我将尝试使用示例进行解释。
class Test2<E, E extends MyObject> //compilation fails here. {
E generic1;
E generic2;
}
现在,如果你使用这样的代码并声明同一类型generic1
的两个变量generic2
和E
,那么java无法识别是否{{1} }是第一个参数或第二个参数,它是E
的子类。