我最近在java 1.7中看到,如果我在Locales上循环并获得相同的ISO3Country代码,那么对于Locale" CS"它给了我错误"找不到3个字母的国家代码CS"。这是预期的行为吗? 我也在java 1.6中测试过但是我没有收到这个错误。
public static IEnumerable<Control>
GetDeepControlsByType<T>(this Control control)
{
return control.Controls.OfType<T>()
.Union(control.Controls.SelectMany(c => c.GetDeepControlsByType<T>()));
}
答案 0 :(得分:0)
简短的回答是:这是一个不再存在的国家/地区的国家/地区代码(塞尔维亚和黑山),因此行为可能确实存在不确定性。
ISO-3166分为三个部分。第一部分,ISO-3166-1,定义了这些国家代码,反过来又有几个部分。这里最相关的是ISO-3166-1 alpha-2和ISO-3166-1 alpha-3,它们分别定义了2个和3个字母的国家/地区代码。
根据alpha-2表,“CS”是塞尔维亚和黑山的国家代码,塞尔维亚和黑山是一个不再存在的国家。它仍然有一个alpha-2条目,标记为“保留删除”,以便向后兼容。为了向后兼容,它可能仍然在Java中。
alpha-3中的等效条目是“SCG”,也被标记为保留。我希望这些代码可以返回给你,但可以理解为什么它可能不会。 (或者,ISO-3166-3为不再存在的国家/地区定义国家/地区代码;它们长度为四个字母,可能“CSXX”应该在此处返回...)