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

标签 java

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

示例:

AAAAA -> AZER
BBBBB -> BVCX

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

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

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

最佳答案

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

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);
}

关于java - 我可以使用带参数的枚举吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36010167/

相关文章:

java - JMX/RMI,其中服务器没有全局唯一的网络名称

java - 无法在 Java 中加载图像

Java - 小程序异常

java - Linux 和 Mac 上的免费 Java native 启动器

java - 比较小时(字符串到小时和实际小时)

java - 用于从 hdfs 提供输入并将输出写入 excel 文件的 Hadoop Mapreduce 示例

java - 由于三个开源项目 Apache Drill、Apache Hadoop 和 Elastic search 使用不同版本的 io.netty 导致依赖收敛错误

java - OKHttp句柄302

java - 从 Hash Map 中删除除指定 Key 集之外的所有条目

java - log4j2 记录器级别不起作用