【问题标题】:Contains method for Java enums包含 Java 枚举的方法
【发布时间】:2023-03-23 08:26:01
【问题描述】:

我有一个简单的枚举,我正在遍历它以检查它是否包含特定值。这是我的代码-

private static boolean checkCountryCode(CountryCode countryCode) {
    return Arrays.asList(CountryCodeList.values()).contains(countryCode.name());
}

尽管列表中存在我在请求中传递的国家/地区代码,但这始终返回 false。在这种情况下,我不能覆盖 equals,因为它是一个枚举。需要您的意见。

方法参数中的 countryCode 具有我在请求中传递的 countryCode。就我而言,它是UA(乌克兰)。 CountryCodeList 是一个预先填充了我们的应用程序在其中运行的所有国家/地区代码的列表。其中一些在此页面上 - http://countrycode.org/

另外,请注意 CountryCode 和 CountryCodeList 都是枚举。

【问题讨论】:

  • 建立一个名称到枚举的静态映射,然后在其中检查它。
  • 我认为您需要提供更多的周边代码才能让人们帮助您。例如,我们看不到 CountryCodeList 和 CountryCode 之间的关系。您可以尝试使用调试器或在该方法中打印一些值,看看是否能给您答案。
  • 我不明白。为什么不只是contains(countryCode)CountryCodeList 是什么?
  • CountryCodeList 包含所有国家代码的列表。正如班级名称所暗示的那样。我调试了,那时我发现它总是返回 false。
  • 贴出CountryCodeListCountryCode的源码。

标签: java


【解决方案1】:

如果 CountryCodeList 是枚举,你可以将你的代码重构为这个

private static boolean checkCountryCode(CountryCode countryCode) {
   try{
      return  CountryCodeList.valueOf(countryCode.name()) != null;
   } catch (java.lang.IllegalArgumentException e) {
      return false;
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 2018-11-02
    • 1970-01-01
    相关资源
    最近更新 更多