gpt4 book ai didi

java - 设计问题 |表示组合框选项的枚举

转载 作者:行者123 更新时间:2023-12-02 10:44:20 26 4
gpt4 key购买 nike

我需要将枚举与组合框一起使用(值如下所示)。

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)

枚举具有执行以下操作的方法 -

  1. toString() - 为 UI 提供自定义字符串。 (显示组合选项)
  2. OptionToDB(静态)- 将选定选项转换为数据库值(保存/更新时)
  3. 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/

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