Я хотел бы использовать ArrayList
, который содержит элементы типа, заданного классом.Повторное использование общего типа T, расширяющего определенный класс
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
.
это работает только потому, что 'Comparable' является исходным типом. Тип метода добавления загрязняет «List>» с произвольными сопоставимыми в этом случае. –
Calculator
Правда. Было бы лучше изменить параметр метода на 'Comparable e'. Но я чувствую, что может оказаться вне сферы действия этого вопроса –