我有一个自动生成我使用的web服务的枚举,因此我无法修改此枚举类,因为进一步更新会覆盖它。
我想为枚举提供翻译:
//I cannot modify this class
public enum Time {
PAST("Past"), PRESENT("Present"), FUTURE("Future");
private final String value;
}
//my code
Time time = getTimeFromWebservice();
String translation;
switch(time.value()) {
case: "Past": translation = "Vergangenheit"; break;
case: "Present": translation = "Gegenwart"; break;
case: "Future": translation = "Zukunft"; break;
}
我怎么能改善这个?
答案 0 :(得分:1)
您无法在运行时动态扩展/修改枚举。它们被视为常量。
通常,如果您要进行国际化,则所有翻译都是从ResourceBundle
加载的。您可以使用枚举文字作为键:
String translation = bundle.getString(time.name());
或许您想要为密钥添加前缀:
String translation = bundle.getString("myprefix." + time.name());
// or use full qualified name:
String translation = bundle.getString(time.getClass().getCanonicalName() + "." + time.name());
有关详细信息,请参阅http://docs.oracle.com/javase/tutorial/i18n/resbundle/index.html。