Ниже приведен модифицированный вариант объяснения из книги Java Generics and Collections : у нас есть Enum
объявленный
enum Season { WINTER, SPRING, SUMMER, FALL }
, который будет расширен до class
final class Season extends ...
, где ...
должен быть как-то параметризованным базовым классом для Enums. Давайте выясним, что это должно быть. Ну, одним из требований для Season
является то, что он должен реализовывать Comparable<Season>
. Итак, нам понадобится
Season extends ... implements Comparable<Season>
. Что вы могли бы использовать для ...
, который позволил бы этому работать? Учитывая, что он должен быть параметризацией Enum
, единственным выбором является Enum<Season>
, так что вы можете иметь:
Season extends Enum<Season>
Enum<Season> implements Comparable<Season>
Таким образом, Enum
параметризуется в таких типах, как Season
. Реферат из Season
и вы получите, что параметр Enum
- это любой тип, который удовлетворяет
E extends Enum<E>
Морис Нафталин (соавтор, Java Generics and Collections)