是否有任何java(> 5)枚举用于在某个地方列出欧洲国家/地区和语言? 如果没有,我可能会从这个列表中写下它们:http://www.nationsonline.org/oneworld/european_languages.htm
但如果我能避免这种负担,那就太棒了!
P.S。:最后,我开始在geonames.org上使用geoNames webservice。对于我在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()
答案 0 :(得分:15)
专业框架设计师不太可能在他们的图书馆中包含这样的Enum,因为一组国家(以及政治认可的官方语言集合)一直在变化。您要么必须打破向后兼容性,要使Enum对于应该工作超过几年的软件毫无用处,或者您必须在Enum中保留旧的,不再认可的国家/地区和语言
答案 1 :(得分:7)
也许Locale.getISOCountries()
和Locale.getISOLanguages()
可以为您提供帮助。
答案 2 :(得分:7)
使用枚举来存储一些相当稳定的数据是没有错的。你还能做什么,把它存储在XML中?怎么样更好?所以你不必重新编译(这是一个huuuge麻烦)?我们在哪一年生活?
或将其存储在数据库中;当一个新的国家出生时,我们只需要在数据库中插入一行,并且智能编写的应用程序将加载它并立即使用它 - 无需重新启动应用程序!乌拉。
即使对于欧洲来说,这也是一种过度杀伤力。我确信他们不会比我们重新部署我们的应用程序更频繁地更改国家/地区,在任何现代公司中,这些应用程序每周至少发生一次。
没什么是永远的,老兄。我们能在这个太阳系中得到行星的枚举吗?根据Joshua Bloch的说法,是的 - 他在他的书中将其作为Java的最佳建议。根据你们的说法,noooooo。
嗯,至少我们只能发现新的行星,而且我们无法摧毁旧行星(在任何可预见的未来),所以行星枚举在兼容性方面还不错,对吗?
告诉冥王星。
答案 3 :(得分:1)
至少我会从该URL自动生成枚举类。您可以解析HTML,获取值并编写定义枚举的java文件。
每当此网址的内容发生变化时,您都可以重新运行自动生成器并创建新的枚举类。
但请注意 - 枚举中的每个更改都有可能在其余代码中引入错误。