【问题标题】:Are there any java Enum of european countries and languages?有没有欧洲国家和语言的java枚举?
【发布时间】:2010-08-14 21:23:47
【问题描述】:

是否有任何 java (>5) 枚举用于在某处列出欧洲国家和语言? 如果没有,我可能会从这个列表中写出来:http://www.nationsonline.org/oneworld/european_languages.htm

但如果我能避免这种负担,那就太好了!

P.S.:最后,我开始使用 geonames.org 上的 geoNames 网络服务。对于我在 Groovy 中使用这个 sn-p 的国家/地区:

import org.geonames.*

ToponymSearchCriteria sc = new ToponymSearchCriteria()
sc.setContinentCode("eu")
sc.setFeatureCode("PCLI")
def res = WebService.search(sc)
def countries = res.getToponyms().collect{it.countryName}.sort()

【问题讨论】:

  • 为什么要枚举 50 个对象?我认为它不容易维护或使用。你能详细说明你想要一个枚举的原因吗?
  • 该字段中的Java Enum 将具有过于静态的性质。
  • 感谢大家的见解...我想我会忘记为此使用枚举的想法,并将国家及其语言存储为我的应用程序的域对象...跨度>

标签: java enums internationalization


【解决方案1】:

专业的框架设计师不太可能在他们的库中包含这样的 Enum,因为国家的集合(以及政治认可的官方语言的集合)一直在变化。您要么必须打破向后兼容性,使 Enum 对于应该工作超过几年的软件毫无用处,要么您必须在 Enum 中保留旧的、不再被认可的国家和语言.

【讨论】:

  • 我同意这不应该在专业框架中。我只是想知道某个地方是否有人在他自己的图书馆中拥有其中一个,只是开始......
  • 你没有抓住重点:枚举应该是永远存在的。国家变化。
  • 没有什么是永恒的,伙计。我们可以枚举这个太阳系中的行星吗?根据 Joshua Bloch 的说法,是的 - 他在他的书中将它吹捧为 Java 的最佳建议。据你们说,noooooo。
  • 我认为这个太阳系中的行星发生变化的可能性远低于欧洲政治认可的国家。
  • 我的意思是从现在开始。直到 2006 年,还没有行星的官方定义,now there is
【解决方案2】:

使用枚举存储一些比较稳定的数据并没有错。您还能做什么,将其存储在 XML 中?怎么样更好?所以你不必重新编译(这是一个巨大的麻烦)?我们生活在哪一年?

或者存储在数据库中;当一个新的国家诞生时,我们只需要在数据库中插入一行,编写巧妙的应用程序就会立即加载并使用它——无需重新启动应用程序!万岁。

即使对欧洲来说,这也太过分了。我敢肯定,他们更改国家/地区的频率不会比我们重新部署应用程序的频率高,在任何现代公司中,这种情况至少每周发生一次。

没有什么是永恒的,伙计。我们可以枚举这个太阳系中的行星吗?根据 Joshua Bloch 的说法,是的 - 他在他的书中将它吹捧为 Java 的最佳建议。根据你们的说法,noooooo。

好吧,至少我们只能发现新行星,而不能摧毁旧行星(在任何可预见的未来),所以行星枚举就兼容性而言是可以的,对吧?

告诉冥王星。

【讨论】:

  • 感谢您的评论,在“不那么完美的设计决策无论如何都可以完成这项工作”的世界中,我感到不那么孤单了 :-)
【解决方案3】:

也许Locale.getISOCountries()Locale.getISOLanguages() 会帮助你。

【讨论】:

  • java.util.Locale 只会让您依赖于 java 框架,并且当国家/地区发生变化时,您将在下一个 java 次要版本之前获得更新。
【解决方案4】:

至少我会从该 URL 自动生成枚举类。您可以解析 HTML,获取值并编写定义枚举的 java 文件。

并且每当此 URL 的内容发生变化时,您都可以重新运行自动生成器并创建一个新的枚举类。

但请注意 - 枚举中的每一次更改都有可能在其余代码中引入错误。

【讨论】:

    猜你喜欢
    • 2011-05-05
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多