после исправления вашего сломанного предоставленного кода.
Все, что знает компилятор, это то, что мы получаем от матери, что это то, что расширяет отца. Он не знает, что это son
конкретно.
Компилятор не выполняет приведение для ju.
Итак, в коллекции мы можем иметь something that extends father
// services
public interface Mother { public Collection<? extends Father> getMamaStuff(); {}}
public interface Daughter extends Mother {}
// data
public interface Father { public String getPapaStuff(); }
public interface Son extends Father { public String playLoudMusic(); }
public class Clazz {
Clazz(Daughter daughter) {//boilerplate}
Collection<? extends Father> idk = daughter.getMamaStuff();
}
}