我想编写枚举,其中包含两种语言(或更多)的月份名称,例如。一月是英语的,还有其他语言的。我是否必须创建两个相同的枚举,只有名称字段不同?我无法扩展枚举,所以我不知道如何以其他方式做到这一点......
最佳答案
创建一个枚举来提供当月特定于语言的文本怎么样?
public enum Month {
JAN("january","..."),
FEB("february","..."),
MAR("march","..."),
APR("april","...");
Month(String english, String spanish){
this.english=english;
this.spanish = spanish;
}
protected String english;
protected String spanish;
public String getEnglish() {
return this.english;
}
public String getSpanish() {
return this.spanish;
}
}
另一种方法是提供月份的简单枚举,然后提供工厂方法来创建特定于语言的文本值。该解决方案更具可扩展性,因为它允许您添加新语言而无需更改枚举签名。
public enum Month {
JAN,
FEB,
MAR,
APR,
....
}
public interface MonthConverter {
public String toText(Month value);
}
public class MonthEnglish implements MonthConverter {
@Override
public String toText(Month value) { ... }
}
public class MonthSpanish implements MonthConverter {
@Override
public String toText(Month value) { ... }
}
关于java - 枚举相同(不同语言)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43428854/