Объясните дженерики, использованные в объявлении Enum - PullRequest
4 голосов
/ 15 марта 2009

Может кто-нибудь объяснить, что это значит?

Enum<T extends Enum<T>>

Это похоже на круговое определение, и я нахожу это крайне запутанным, если не сказать больше.

1 Ответ

6 голосов
/ 15 марта 2009

Хорошее объяснение есть в разделе часто задаваемых вопросов по Java Generics .

С конца бит:

Подводя итог, можно расшифровать декларацию Enum<E> extends Enum<E>> as: Enum - это универсальный тип, который может быть созданным только для его подтипов, и эти подтипы будут наследовать некоторые полезные методы, некоторые из которых принимают конкретные аргументы подтипа (или в противном случае зависит от подтипа).

(хотя я сочувствую - рекурсивно общие объявления - это боль. Мой протокол буферизует порт на C # еще хуже: для него требуется два объявления, каждое из которых ссылается на себя и друг на друга ... У меня нет не нашел способ их упростить.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...