Java 枚举 : Gathering info from another enums

标签 java enums

我做了一个similar question几天前,但现在我有了新的要求和新的挑战 =)。像往常一样,我将动物枚举用于教学目的,一旦我不想解释特定领域的东西

我有一个基本的动物枚举,整个动物园都在使用它(我可以向它添加东西,但必须保持兼容性):

public enum Animal {
  DOG,
  ELEPHANT,
  WHALE,
  SHRIMP,
  BIRD,
  GIRAFFE;
}

我需要将它们归为几个不相关的类别,例如灰色动物(鲸鱼(我的鲸鱼是灰色的)和大象)、小型动物(鸟、虾和狗)、海洋动物(鲸鱼和虾)。

我可以像我之前的问题中建议的那样,添加很多 boolean 值,比如 isGray、isSmall 和 isFromSea,但我想要一种可以将其保存在其他地方的方法(因此我的枚举不需要知道很多)。像这样的东西:

public enum Animal {
  DOG,
  ELEPHANT,
  WHALE,
  SHRIMP,
  BIRD,
  GIRAFFE;

  public boolean isGray() {
    // What comes here?
  }
}

别处

public enum GrayAnimal {
  WHALE,
  ELEPHANT;
}

这怎么可能?我对 Java 的要求是不是太多了?

最佳答案

你试过了吗EnumSetEnumMap

你可以创建一个方法

Set<Animal> grayAnimals(){
   return EnumSet.of(Animal.WHALE, Animal.ELEPHANT);
}

关于Java 枚举 : Gathering info from another enums,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2504245/

相关文章:

java - 从监听器访问对象

java - 创建一个 Spring bean 保存 ServletRequest 属性

java - 为什么 CTRL+C(用 Awt.Robot 模拟)不能正常工作?

c++ - 如何访问另一个命名空间中作为模板类成员存在的枚举?

java - 当枚举被声明为通用参数时获取枚举的 values()

java - SubscribeOn 仅使用池中的 1 个线程

java - 将青色的整数颜色转换为 RGB 时遇到问题

java - 在泛型表达式中使用枚举来定义返回类型

java - 在枚举中使用反射但总是得到 NoSuchMethodException

C# 将对象转换为枚举