关于这个问题有很多问题。但是,我的特殊情况不是处理接口声明,而是方法返回类型。有关与方法一起使用的泛型的Java文档说,这是合法的:public <T> boolean isType(ArrayList<T> a) {
https://docs.oracle.com/javase/tutorial/extra/generics/methods.html
但是,我收到错误The type parameter T is hiding the type T
代码本身可以正常运行,但是我的问题是,这里实际发生了什么?我应该对此负责吗/这会在骑行中造成问题吗??
这是完整的代码:
import java.util.ArrayList;
public class Generics<T, K> {
private T obj1;
private K obj2;
public Generics(T obj1, K obj2) {
this.obj1 = obj1;
this.obj2 = obj2;
}
public T getObj1() {
return obj1;
}
public <T> boolean isType(ArrayList<T> a) {//Error on this line
return a.equals(obj1); //I realize this does not get the type.
}
}
感谢您的帮助
答案 0 :(得分:4)
您已经在声明泛型类时使用T
。您需要为该方法使用另一个别名
public <U> boolean isType(ArrayList<U> a) {
return a.equals(obj1);
}