是否有欧洲国家和语言的java枚举?

是否有欧洲国家和语言的java枚举?,java,enums,internationalization,Java,Enums,Internationalization,是否有java(>5)枚举用于列出欧洲国家和语言? 如果没有,我可能会从以下列表中列出: 但如果我能避免这个负担,那就太好了 最后,我开始使用geoNames.org上的geonameswebservice。对于我在Groovy中使用此代码段的国家: import org.geonames.* ToponymSearchCriteria sc = new ToponymSearchCriteria() sc.setContinentCode("eu") sc.setFeatureCode("P

是否有java(>5)枚举用于列出欧洲国家和语言? 如果没有,我可能会从以下列表中列出:

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

最后,我开始使用geoNames.org上的geonameswebservice。对于我在Groovy中使用此代码段的国家:

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()

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

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

每当此URL上的内容发生更改时,可以重新运行自动生成器并创建新的枚举类


但是请注意,枚举中的每一个更改都有可能在代码的其余部分引入错误

也许
Locale.getISOCountries()
Locale.getISOLanguages()
会对您有所帮助。

使用enum存储一些相当稳定的数据没有什么错。您还可以做什么,将其存储在XML中?那怎么会更好?所以您不必重新编译(这是一个huuuge难题)?我们生活在哪一年

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

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


没有什么是永恒的,伙计。我们能列举一下这个太阳系中的行星吗?根据Joshua Bloch的说法,是的——他在书中把它吹捧为Java的最佳建议。据你们说,不

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


告诉冥王星。

你为什么要枚举50个对象?我认为它不容易维护或使用。你能详细说明你想要枚举的原因吗?在该字段中的
Java enum
太静态了。谢谢大家的见解。。。我想我会忘记使用枚举的想法,将国家及其语言存储为我的应用程序的域对象…我同意这不应该在专业框架中。我只是想知道,是否有人,在某个地方,在他自己的库中有一个这样的库,首先……你没有抓住要点:枚举应该是永远的。国家变了,没有什么是永恒的,伙计。我们能列举一下这个太阳系中的行星吗?根据Joshua Bloch的说法,是的——他在书中把它吹捧为Java的最佳建议。据你们所说,不,不,我认为太阳系中的行星比欧洲政治上公认的国家变化的可能性要小得多。我的意思是从现在开始。直到2006年,planet还没有正式的定义。感谢您的评论,我觉得在“不太完美的设计决策可能会完成这项工作”的世界中不那么孤独了:-)java.util.Locale只会让您依赖java框架,当国家发生变化时,您将在下一个java小版本之前不会得到更新。