Зачем нужна конструкция <E extends Enum<E>> в определении Enum?