通用型T隐藏型

时间:2018-07-24 15:07:09

标签: java generics

关于这个问题有很多问题。但是,我的特殊情况不是处理接口声明,而是方法返回类型。有关与方法一起使用的泛型的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.
   }

}

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

您已经在声明泛型类时使用T。您需要为该方法使用另一个别名

public <U> boolean isType(ArrayList<U> a) {
    return a.equals(obj1); 
}