如何在价值的基础上获得枚举?

时间:2015-03-27 04:04:58

标签: java enums

我有一个枚举

public enum Category {
NonResidential("Non-Residential"), Residential("Residential");
private String category;

BuildingAssetCategory(String s) {
    category = s;
}

public String getType() {
    return category;
}

public void setType(String type) {
    this.category = type;
}
}

我希望在它的价值基础上获得枚举。 我有String的值Non-Residential,那我怎样才能让enum返回'NonResidential。

P.S我想创建自己的魔法而不是java支持的东西。 我已经读出了许多像this这样的问题,但我想要不同的答案。

2 个答案:

答案 0 :(得分:3)

这里没有魔法,因为它是你自己的定义字段('category')你应该编写自己的静态方法来搜索它。例如:

public enum Category {
  ...
        public static Category findByName(String cat){
            // loop over Category.values() and find the requested cat
        }

btw如果您提供枚举名称(例如“NonResidential”),ValueOf将起作用,但它不适用于类别名称(例如“非住宅”)

答案 1 :(得分:0)

使用valueOf

Category.valueOf("Non-Residential");

这将返回枚举。