加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 我可以根据其字段的值获取枚举吗?

发布时间:2020-12-14 16:35:51 所属栏目:Java 来源:网络整理
导读:我想根据其字段值获取一个特定的枚举. 枚举: public enum CrimeCategory { ASBO ("Anti Social Behaviour"),BURG ("Burglary"),CRIMDAM ("Criminal Damage And Arson"),DRUGS ("Drugs"),OTHTHEFT ("Other Theft"),PUPDISOR ("Public Disorder And Weapons")
我想根据其字段值获取一个特定的枚举.

枚举:

public enum CrimeCategory {
    ASBO ("Anti Social Behaviour"),BURG ("Burglary"),CRIMDAM ("Criminal Damage And Arson"),DRUGS ("Drugs"),OTHTHEFT ("Other Theft"),PUPDISOR ("Public Disorder And Weapons"),ROBBERY ("Robbery"),SHOPLIF ("Shoplifting"),VEHICLE ("Vehicle Crime"),VIOLENT ("Violent Crime"),OTHER ("Other Crime");

    private  String category;


    private CrimeCategory (String category) {
        this.category = category;
    }

    public String returnString() {
        return category; 
    }
}

获得新的枚举:

aStringRecivedFromJson = "Anti Social Behaviour"
CrimeCategory crimeCategoryEnum;
crimeCategoryEnum = CrimeCategory.valueOf(aStringRecivedFromJson);

我一直在试图找出一个方法,以便上面提供一个枚举,以便它可以通过与其他犯罪信息一起散布在Hashmap中.
预期成果:ASBO

解决方法

作为参考,这里有一个替代解决方案与HashMap:
enum CrimeCategory {
  ASBO("Anti Social Behaviour"),BURG("Burglary"),CRIMDAM("Criminal Damage And Arson"),DRUGS("Drugs"),OTHTHEFT("Other Theft"),PUPDISOR("Public Disorder And Weapons"),ROBBERY("Robbery"),SHOPLIF("Shoplifting"),VEHICLE("Vehicle Crime"),VIOLENT("Violent Crime"),OTHER("Other Crime");

  private static final Map<String,CrimeCategory> map = new HashMap<>(values().length,1);

  static {
    for (CrimeCategory c : values()) map.put(c.category,c);
  }

  private final String category;

  private CrimeCategory(String category) {
    this.category = category;
  }

  public static CrimeCategory of(String name) {
    CrimeCategory result = map.get(name);
    if (result == null) {
      throw new IllegalArgumentException("Invalid category name: " + name);
    }
    return result;
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读