作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将枚举与组合框一起使用(值如下所示)。
YES (shown as YES on UI, stored in DB as Y)
NO (shown as NO on UI, stored in DB as N)
DEFAULT (shown as "" on UI, stored in DB as null)
枚举具有执行以下操作的方法 -
DBToOption(静态)- 将 DB 值转换为所选选项(加载屏幕时)
static enum EnumOption{
YES,NO,DEFAULT;
....
public static EnumOption DBToOption(String val){
if("Y".equals(val)){
return YES;
} else if("N".equals(val)){
return NO;
}else {
return DEFAULT;
}
}
....
}
它工作得很好,但上述方法的问题是它使用 if/else 比较来推断要返回哪个选项/数据库值。
我想过将 dbValue 存储为枚举中的字段,但我无法减少 DBToOption 中的 if/else。
可以使用更好的设计以任何方式避免这个 if/else 吗?
最佳答案
如果将dbValue
存储为enum
中的字段,则可以删除if/else并将其替换为for循环,尽管我不这样做看看这个特殊情况下的 if/else 有什么问题:
static enum EnumOption {
YES("Y"),
NO("N"),
DEFAULT("");
private final String value;
private EnumOption(String value) {
this.value = value;
}
public static EnumOption DBToOption(String val) {
for (EnumOption opt : EnumOption.values()) {
if (opt.value.equals(val)) {
return opt;
}
}
return DEFAULT;
}
}
关于java - 设计问题 |表示组合框选项的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8281251/
我是一名优秀的程序员,十分优秀!