1

Тема: Робота з generic`s

Маю написати клас House, який має поле residents типа List, та метод enter(Object resident). Також є 4 класа: Dog, Puppy (extends Dog), Cat, Kitty (extend Cat). І суть у тому що метод enter() має додавати до класу House тварин, але так щоб якщо перший елемент при додаванні була кішка, могли додаватись тільки кішки, відповідна ситуація із собаками.

Ось так виглядає метод Main.

public static void main(String[] args) {
        Dog rex = new Dog("Rax");
        Puppy randy = new Puppy("Randy");
        Cat barbos = new Cat("Barbos");
        Kitten murzik = new Kitten("Murzik");

        House dogHouse = new House();
        dogHouse.enter(rex);
        dogHouse.enter(randy);
        dogHouse.enter(murzik); //This must fail on compilation stage if you parameterize the dogHouse. Delete the line when solution is ready
        System.out.println(dogHouse);

        House catHouse = new House();
        catHouse.enter(barbos);
        catHouse.enter(murzik);
        catHouse.enter(rex); //This must fail on compilation stage if you parameterize the catHouse. Delete the line when solution is ready
        System.out.println(catHouse);
    }

2

Re: Робота з generic`s

Dyus написав:

...якщо перший елемент при додаванні була кішка, могли додаватись тільки кішки...

vs

This must fail on compilation stage if you parameterize the catHouse

*SCRATCH*

Обираю варіант №2 :)

This must fail on compilation stage if you parameterize the catHouse

Bounded Type Parameters

Подякували: koala, leofun012

3

Re: Робота з generic`s

Зробити клас/інтерфейс Animal який наслідують/імплементують інші наші 4 класи, в класі House зробити поле List<Animal>, і при виклику метода enter(Animal resident) перевіряти перший елемент(якщо такий є) на instanceof Кота, та/чи Собаки. Згідно умови, сигнатура методу enter(Object resident) непорушується, адже все наслідує(а отже є) Object.

Подякували: colin200x1