首页 > 解决方案 > 如何在方法中传递枚举参数

问题描述

我有 2 个枚举类:

public enum Dogs
{
 JACKIE("Jackie"),
 BOBBY("Bobby");
}

public enum Cats
    {
     CHAN("Chan"),
     SPONGE("Sponge");
    }

现在我在其他一些类中有一个方法,我想将枚举作为参数传递,所以我可以根据需要选择其中任何一个。

public void findAnimal()
{
    List<Dogs> animals = Arrays.asList(Dogs.values());
    for (Dogs animal: animals)
    {
        rest of the code goes here
    }
}

因此,我不想提供硬编码的“狗”,而是希望有一个选择并将参数传递给该方法,例如

public void (Enum enumAnimals)
{
    List<Enum> animals = Arrays.asList(Enum.values());
    for (Enum animal: animals)
}

但它不接受它这样。是否可以将泛型类型作为“枚举”传递?

标签: javaparametersenums

解决方案


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) );
...

请注意,许多使用类的示例/教程Animal更多地关注继承,即class Cat extends Animal等等。阅读你问题的字里行间让我觉得这就是你真正想要的,而不是如何使用枚举。


推荐阅读