@WTFAYD

В чем суть self-bounded types?

Здравствуйте! Прочитал эту статью, пару ответов на StackOverFlow, но все равно осталось много вопросов по поводу self-bounded types.

Как я правильно понял, что class Enum<E extends Enum<E>> - это класс, аргументом типа которого является его производный класс, и такая форма записи используется для того, что бы методы базового класса могли прямо использовать экземпляры производного класса.

Однако возникают вопрос - почему нельзя вместо использования параметризации просто указать в аргументах методов ссылку на базовый класс? Полиморфизм как раз обеспечит то, что нужно. Если нужен, например, только экземпляр производного класса для сравнения с чем-то, то это подойдет. А если требуется использование методов производного класса, можно использовать RTTI.
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Не в этом дело. Тут задача — уже при компиляции сказать, что программа некорректна и нельзя сравнивать, например, enum TrLight { RED, YELLOW, GREEN } и enum Pet { CAT, DOG, HEN }.

Для Java-машины TrLight и Pet — один и тот же класс, проверка шаблонных классов идёт при компиляции!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы