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);
}
}