我想使用包含类指定类型的元素的ArrayList
。
public class Foo<T extends Comparable<T>> extends AbstractFoo {
private ArrayList<T> list = new ArrayList<T>();
@Override
public void add(Comparable e) {
list.add(e); // The method add(T) in the type ArrayList<T> is not applicable for the arguments (Comparable)
}
}
为什么我无法将 e
添加到 list
中?由于 T 肯定扩展了 Comparable,我想我可以将 e
添加到 list
中。
最佳答案
假设您有一个类 Teacher
和一个类Student
两者都实现 Comparable
。现在,如果您创建 Foo<Teacher>
,这个 foo 对象将包含教师列表 ArrayList<Teacher>
。如果您的代码可以编译,您现在可以将学生(因为它是可比较的)添加到教师列表中,这当然是不允许的。
您可能实际上想要:
@Override
public void add(T e) {
list.add(e);
}
关于java - 重用扩展特定类的泛型类型 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41871429/