Я пытаюсь определить, а затем реализовать абстрактный сеттер, который принимает список объектов в качестве параметра. Вот суть этой простой идеи:Реализовать общий метод со значением параметра списка
public abstract class MyClass {
public abstract void setThings(List<?> things);
}
public class Bar extends MyClass {
private List<String> things;
@Override
public void setThings(List<String> things) {
this.things = things;
}
}
Это не работает. Я получаю Method does not override method from its superclass
и both methods have the same erasure, but neither overrides the other
. Я понимаю последнюю ошибку, связанную с стираниями, но даже не могу понять, как это сделать. Я пробовал некоторые другие:
public abstract <T> void setThings(List<T> things);
... а также несколько других. И я нашел другие вопросы/ответы на SO, которые приблизились к решению этого вопроса, но никто из них не предоставил надежного ответа (по крайней мере, это не было ясно для меня). Я прочитал the tutorials, но безрезультатно. Что мне не хватает?
Спасибо, я пошел с вашим примером, и он работает красиво. Мне придется потратить еще некоторое время на изучение дженериков, некоторые из тонкостей по-прежнему немного таинственны для меня, такие как разница между использованием '?', 'T',' E 'и т. Д. Ничего лишнего (более) чтения не может исправить! – Madbreaks