繁体   English   中英

Java中这两个Enum有什么区别

[英]What is the difference between these two Enum(s) in Java

我有一个 String 对象: String theLanguage = "de";

我有这两个枚举:-

枚举 1:

public enum Lang
{
   French("fr"),
   German("de"),
   English("en"), 
   Italian("it"),
   Spanish("sp");

   private String lang;

   Lang(String lang) {
      this.lang = lang;
   }

   public String lang() {
      return lang;
   }
}

枚举 2:

public enum Lang
{
   French(1, "fr"),
   German(2, "de"),
   English(3, "en"), 
   Italian(4, "it"),
   Spanish(5, "sp");


   final int languageID;

   private final String code;

   Lang( int languageID, String code)
   {
      this.languageID = languageID;
      this.code= code;
   }
}

- - - - - - - - - - - - 我的问题 - - - - - - - - - - - - -----

Q 1 - 这两个枚举有什么区别(基本上在第二个枚举中,为什么有 int 值)?

Q 2 -我需要做什么或添加第二个 Enum以便使用 Enum2搜索/匹配theLanguage对象。 ?

第二个只有一个额外的参数,languageID

将此代码添加到第二个枚举以按代码搜索(例如“de”)

private static Map<String, Lang> reverseLookup = Arrays.stream(values())
             .collect(Collectors.toMap(Lang::getCode, Function.identity()));

public String getCode() {
    return code;
}

public static Lang fromCode(final String code) {
    return reverseLookup.get(code);
}

1 - 第二个可以通过 string 和 int 值搜索(例如,如果您知道语言的 id 但不知道它的代码)。 知道“WhoisRIR”在您的构造函数应该在的地方做什么。

2 - 您需要为代码字符串添加一个 getter,然后 foreach 枚举,直到找到代码与theLanguage相同的元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM