示例:在类Currency
中有一个静态方法getInstance(Locale locale)
。
但是,如果我写的话:
Currency currency = Currency.getInstance(Locale.forLanguageTag("it"));
它给出了一个例外(IllegalArgument ..)
另一方面:
Currency currency = Currency.getInstance(Locale.forLanguageTag("it-IT"));
编译没有问题。
我们可以安全地说,如果没有国家/地区代码,那么它的区域设置是不完整的吗?
请注意,在某些情况下,指定唯一的语言是构建Locale的有效选项:
Locale localize = Locale.forLanguageTag("it");
System.out.println(localize.getDisplayName());
答案 0 :(得分:2)
您可以使用仅代表没有国家/地区的语言的区域设置,这完全有效。
但是你不能从一种语言中获得货币,因为货币与国家有关,而与语言有关。意大利的国家确实有货币,意大利语没有...
答案 1 :(得分:1)
javadoc for Currency#getInstance解释说:
返回给定语言环境的国家/地区的Currency实例。忽略语言环境的语言和变体组件
如果您查看Locale#forLanguageTag javadoc:
返回指定的IETF BCP 47语言标记字符串的区域设置。
如果最后你引用how those tags work,你会看到"它"是意大利语" it_IT"是Italian_Italy。