Для начала - задача некорректная, расставил дженерики, валидатор принял - по факту в консоли вот что:
В доме находятся:
Пес Bruno
Щенок Larsik
Кот Barsik
В доме находятся:
Кот Barsik
Котенок Keksik
Пес Bruno
Т.е - что ставили дженерик, что нет - толку ноль.
Второй момент:
public class House<С> {
private List<С> residents = new ArrayList<С>();
public void enter(С resident) {
residents.add(resident);
}
public void leave(С resident) {
residents.remove(resident);
}
Не совсем понятно - если в объявлении метода написать так:
public <С> void enter(С resident)
То будет ошибка о несовместимости типов. Будет ругаться, что эррэй лист типизирован как С, не могу запихать в него С - почему ???
Если же объявить эррэй лист так:
private List residents = new ArrayList<С> () ;
То ошибка уходит.
В общем, хочется понять отличие.
Этого private List<С> residents = new ArrayList<С> () и этого private List residents = new ArrayList<С> () ;
Этого public <С> void enter(С resident) от этого public void enter(С resident)
Спасибо!