【发布时间】: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。
-
贴出
CountryCodeList和CountryCode的源码。
标签: java