Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将数据库枚举映射到xml枚举_Java_Xml_Enums - Fatal编程技术网

Java 如何将数据库枚举映射到xml枚举

Java 如何将数据库枚举映射到xml枚举,java,xml,enums,Java,Xml,Enums,我有一个实现(编码)枚举的现有数据库: A B C 我需要转换为(自描述)XML枚举: 苹果 香蕉 胡萝卜 Java中是否有一个既定的模式来实现这一点?我当前的方法感觉很笨重(并且不能用于其他枚举,因为您不能继承/扩展java枚举) 公共枚举食品{ 苹果(“A”、“苹果”), 香蕉(“B”、“香蕉”), 胡萝卜(“C”,“胡萝卜”); 私有最终字符串数据库代码; 私有最终字符串xmlCode; 私有静态最终地图数据库CodeToFood= 新的HashMap(); 静止的{ 对于(食品f:val

我有一个实现(编码)枚举的现有数据库:
A
B
C

我需要转换为(自描述)XML枚举:
苹果
香蕉
胡萝卜

Java中是否有一个既定的模式来实现这一点?我当前的方法感觉很笨重(并且不能用于其他枚举,因为您不能继承/扩展java枚举)

公共枚举食品{
苹果(“A”、“苹果”),
香蕉(“B”、“香蕉”),
胡萝卜(“C”,“胡萝卜”);
私有最终字符串数据库代码;
私有最终字符串xmlCode;
私有静态最终地图数据库CodeToFood=
新的HashMap();
静止的{
对于(食品f:values()){
put(f,getDatabaseCode(),f);
}
}
私人食品(字符串数据库代码、字符串xmlCode){
this.databaseCode=数据库代码;
this.xmlCode=xmlCode;
}
公共字符串getDatabaseCode(){
返回数据库代码;
}
公共字符串getXmlCode(){
返回xmlCode;
}
公共静态数据库代码(字符串数据库代码){
返回databasecodetood.get(databaseCode);
} 
}
实施


具体的实现并不重要。

请详细解释不能重复用于其他枚举。这似乎是Java中枚举值之间映射的一种非常标准的方法。为什么笨重?您有一个快速的哈希查找。@Braj Java枚举无法扩展任何内容,因为它们allready隐式扩展了Java.lang.Enum。因此,我不能将映射逻辑放在AbstractXmlCodeDatabaseCodeEnum中,并让每个enum从中继承。这样我就可以剪切和粘贴每个新枚举的映射逻辑了吗?
public enum Food {  
    Apple("A", "Apple"),
    Banana("B", "Banana"),
    Carrot("C", "Carrot");

    private final String databaseCode;
    private final String xmlCode;

    private static final Map<String, Food> databaseCodeToFood = 
        new HashMap<String, Food>();
    static {
        for(Food f: values()) {
            databaseCodeToFood.put(f,getDatabaseCode(), f);
        }
    }

    private Food(String databaseCode, String xmlCode) {
        this.databaseCode = databaseCode;
        this.xmlCode = xmlCode;
    }

    public String getDatabaseCode() {
        return databaseCode;
    }

    public String getXmlCode() {
        return xmlCode;
    }

    public static Food fromDatabaseCode(String databaseCode) {
        return databaseCodeToFood.get(databaseCode);
    } 
}