迭代枚举枚举

Aar*_*esh 2 java enums

我有一个类似的结构

public class EnumTest{
     enum fauna
     {
         Animals, Birds;

         enum Animals
         {
              Tiger("tiger"),
              Lion("lion");

              String name;

              Animals(String name)
              {
                   this.name = name; 
              }
         }

         enum Birds
         {
              Peacock("peacock"),
              owl("Owl");

              String name;

              Birds(String name)
              {
                   this.name = name; 
              }
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

现在我找不到一种方法来迭代enum动物群来打印枚举动物和鸟类的名字.有什么办法吗?

gus*_*afc 9

不幸的是,你不能对这样的枚举进行分组.枚举与枚举内的值Birds不同.通常的方法是添加一个也是枚举的字段:Birdsfauna

enum Fauna {
    enum Type { MAMMAL, BIRD }

    TIGER(Type.MAMMAL), 
    LION(Type.MAMMAL), 
    PEACOCK(Type.BIRD), 
    OWL(Type.BIRD);

    private final Type type;

    Fauna(Type type) { this.type = type; }

}
Run Code Online (Sandbox Code Playgroud)

如果你只想要特定类型的动物,例如所有BIRD的动物,你将不幸地写一个帮助方法来做到这一点,迭代所有的Fauna值并选择正确类型的那些.(除非你正在运行Java 8,在这种情况下它只是Stream.of(Fauna.values()).filter(f -> f.type == BIRD).toList()或类似的东西).