我可以使用带参数的枚举吗?

时间:2016-03-15 11:33:55

标签: java

我有一个预先确定的有限值列表。每个值都必须映射到另一个值。

示例:

AAAAA -> AZER
BBBBB -> BVCX

但我也有,取决于一些参数:

CCCCC -> CPA1
CCCCC -> CPA2
CCCCC -> CPA3
CCCCC -> CPA4

我最初想过使用枚举,但我如何考虑参数?

2 个答案:

答案 0 :(得分:1)

您可以使用下面的构造函数来映射值

enum Apple {
  A(10), B(9), C(12), D(15), E(8);

  private int price; // price of each apple 

  // Constructor 
  Apple(int p) {
    price = p;
  }

  int getPrice() {
    return price;
  }
}

答案 1 :(得分:1)

您可以向枚举添加方法,以传递参数,例如

enum MyEnum {
  AAAAA {
    @Override String mappedValue(Param parameter) { return "AZER"; }
  },
  BBBBB {
    @Override String mappedValue(Param parameter) { return "BVCX"; }
  },
  CCCCC {
    @Override String mappedValue(Param parameter) {
      if (parameter.equals(something)) {
        return "CPA1";
      } else if (parameter.equals(somethingElse)) {
        return "CPA2";
      } else {
        return "CPA3";
      }
    }
  }
  ;

  abstract String mappedValue(Param parameter);
}