roo*_*dah -2 java parameters enums
我有2个枚举类:
public enum Dogs
{
JACKIE("Jackie"),
BOBBY("Bobby");
}
Run Code Online (Sandbox Code Playgroud)
和
public enum Cats
{
CHAN("Chan"),
SPONGE("Sponge");
}
Run Code Online (Sandbox Code Playgroud)
现在,我在其他一些类中有一个方法,希望将枚举作为参数传递,因此我可以根据需要选择其中一个。
public void findAnimal()
{
List<Dogs> animals = Arrays.asList(Dogs.values());
for (Dogs animal: animals)
{
rest of the code goes here
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我不想提供硬编码的“狗”,而是希望有一个选择并将参数传递给方法,例如
public void (Enum enumAnimals)
{
List<Enum> animals = Arrays.asList(Enum.values());
for (Enum animal: animals)
}
Run Code Online (Sandbox Code Playgroud)
但是它不接受这样。是否可以将通用类型传递为“枚举”?
Enum是所有枚举的基类,因此不会做任何事情。如果要使用多个枚举,可以让它们实现一个通用接口,但是即使那样,您也需要提供实例。可以通过反思来做到这一点,但我想告诉您,现在的权力将是灾难的根源。通常,枚举是针对静态类型的,而不是针对单个实例(例如特定的猫)的。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) );
...
Run Code Online (Sandbox Code Playgroud)
请注意,许多使用类似类的类的示例/教程都Animal更加关注继承,即class Cat extends Animal等。在问题的各行之间阅读使我感到这实际上是您所追求的,而不是如何使用枚举。