gpt4 book ai didi

java - 有什么方法可以强制执行 java 枚举值的合规性吗?

转载 作者:行者123 更新时间:2023-12-01 17:45:40 24 4
gpt4 key购买 nike

考虑以下枚举:

public enum AllColors {
WHITE,
RED,
GRAY,
GREEN,
BLUE,
BLACK
}

public enum GrayscaleColors {
WHITE,
GREY,
BLACK
}

枚举之间存在差异(灰色/灰色) - 但无法在编译时捕获此拼写错误。如果系统使用数据库存储或消息传递并且必须根据枚举值的值在枚举值之间进行转换,这可能会造成麻烦。

我希望我能做这样的事情:

public enum GrayscaleColors {
AllColors.WHITE,
AllColors.GRAY,
AllColors.BLACK
}

但这似乎不可能。

最佳答案

您可以声明一个构造函数,并在构造函数中比较名称:

public enum GrayscaleColors {
WHITE(AllColors.WHITE),
GREY(AllColors.GRAY),
BLACK(AllColors.BLACK);

GrayscaleColors(AllColors ac) {
if (!name().equals(ac.name()) throw new IllegalArgumentException();
}
}

或者,您可以简单地使用AllColors.valueOf:

public enum GrayscaleColors {
WHITE,
GREY,
BLACK;

GrayscaleColors() {
// Will throw if no corresponding name exists.
AllColors.valueOf(name());
}
}

或者,当然,您可以编写一个单元测试来检查匹配的名称。

关于java - 有什么方法可以强制执行 java 枚举值的合规性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55641479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com