0

我想从这个枚举中使用 2 次,首先在某些时候这些 int 值将从数据库中出来。在不修改构造函数的情况下,我想从中获得一个用户友好的名称,就像一个对象包含 INS 一样,我希望枚举上的方法之一返回“保险”.. 我如何将这些方法添加到这个枚举(不修改构造函数),这将为程序员提供技术名称,例如“HCARE”,并为用户提供用户友好名称“Insurance”。另外,想知道从数据库中获取用户友好名称需要进行哪些更改?

public enum Type
{
    UNDEF(-1),
    HCARE(1),
    INS(2);

    private int value;

    Type(final int value)
    {
        this.value = value;
    }

}
4

2 回答 2

1

覆盖toString每个成员:

public enum Type
{
    UNDEF(-1)
    {
         public String toString(){ return "Friendly name here"; }
    },
    HCARE(1)
    {
         public String toString(){ return "Friendly name here"; }
    },
    INS(2)
    {
         public String toString(){ return "Insurance"; }
    };

    private int value;

    Type(final int value)
    {
        this.value = value;
    }

    public abstract String toString();

}

文档说“当存在更“程序员友好”的字符串形式时,枚举类型应该覆盖 [toString]。”

于 2013-04-21T23:39:59.537 回答
1

您可以添加一种方法来从数据库(可能缓存它)或最初从其他地方(例如资源文件)获取用户友好的名称。

由于我们在这里讨论显示名称,因此我还添加了一个 Locale 参数,因此它可以支持多种语言。

public enum Type
{
    UNDEF(-1),
    HCARE(1),
    INS(2);

    private int value;

    Type(final int value)
    {
        this.value = value;
    }

    public String getNiceName(Locale l){
        // look at my id and code and use that to look up the name
        return NiceNameManager.nameForType(this, l);
    }
}
于 2013-04-21T23:36:59.897 回答