java - 如何通过属性获取枚举类型?

标签 java enums

我写了一个枚举类,我想要么按类型获取属性,要么按属性获取类型,但这似乎不可能。

public enum AreaCode {
    area1(7927),
    area2(7928),
    area3(7929);

    private final int ac;

    AreaCode(int ac) {
        this.ac = ac;
    }

    int areaCode(){
        return ac;
    }

    AreaCode area(int n) {
        switch (n) {
            case 7927: return AreaCode.area1;
            case 7928: return AreaCode.area2;
            case 7929: return AreaCode.area3;
        }
    }
}

上面的代码不会编译。如何使 area(int n) 工作?

最佳答案

除了其他发帖者指出的问题外,我会重写方法以避免重复信息(keep it DRY !):

public static AreaCode area(int n) {
  for (AreaCode c : values()) {
    if (c.ac == n) {
      return c;
    }
  }
  // either throw the IAE or return null, your choice.
  throw new IllegalArgumentException(String.valueOf(n));
}

关于java - 如何通过属性获取枚举类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7888560/

相关文章:

java - Android:不可转换的类型;无法将 android.preference.Preference 转换为 androidx.preference.SeekBarPreference

ios - 将枚举分配给 Objective-C 中的变量

java - 如我的代码示例所示,将应用程序常量放置是正确的方法吗?

没有将其封装在类中的 Java Enum

java - Spring surf 和 webscripts 项目消歧

java - 如何在 Android 中获取类(非 Activity )的上下文?

c# - 如何在 C# 中使用 flag 属性从枚举中取回位掩码值?

c++ - 迭代方向枚举

java - 查找真值组合的数量

java - 可以在 JTextArea 上显示图片吗?