java - 枚举相同(不同语言)类

标签 java

我想编写枚举,其中包含两种语言(或更多)的月份名称,例如。一月是英语的,还有其他语言的。我是否必须创建两个相同的枚举,只有名称字段不同?我无法扩展枚举,所以我不知道如何以其他方式做到这一点......

最佳答案

创建一个枚举来提供当月特定于语言的文本怎么样?

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/

相关文章:

java - Firebase 实时数据库隐私最佳实践

java - Android Studio - ImageView下方的TextView

java - 无法解析符号 "actionBarActivity"- Android

java - 从 HashMap 中删除列表中未列出的字符串

java - 如何从我的数据库中的触发器调用 java 类?

java - 开关表达式不能是浮点型、 double 型或 boolean 型

java - 自定义 Java Swing 菜单项、菜单分隔符和菜单加速器的前景色和背景色

java - 为什么我的新鲜字符串前面有空?

java - WebSphere MQ SHARECNV 参数是否会导致重复消息?

Java PreparedStatement Wilcard 不起作用