Для начала - задача некорректная, расставил дженерики, валидатор принял - по факту в консоли вот что: В доме находятся: Пес 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) Спасибо!