Enum
- это класс base для всех перечислений, поэтому Enum.values()
ничего не сделает.Если вы хотите использовать несколько перечислений, вы можете сделать так, чтобы они реализовали общий интерфейс, но даже тогда вам нужно будет предоставить экземпляры.Это может быть сделано с помощью размышлений, но я чувствую, что передаю вам силу, которая теперь станет рецептом катастрофы.В общем, перечисления предназначены для статических типов, таких как AnimalType
, а не для отдельных экземпляров, таких как конкретная кошка.
Я бы посоветовал вам что-то вроде этого (очень упрощенный код, чтобы сделать его коротким):
enum AnimalType {
CAT,
DOG;
}
class Animal {
String name;
AnimalType type;
Animal( String n, AnimalType t) {
name = n;
type = t;
}
}
Set<Animal> animals = ... //create a set
animals.add( new Animal( "Jackie", AnimalType.CAT ) );
animals.add( new Animal( "Chan", AnimalType.DOG) );
...
Обратите внимание, что многие примеры / учебные пособия, в которых используется такой класс, как Animal
, фокусируются больше на наследовании, т.е. class Cat extends Animal
и т. Д. Чтение между строками вашего вопроса заставляет меня чувствовать, что это то, что вы на самом деле ищете, а не как использовать перечисления.