检查 Local getDefault 方法的行为更改

此规则会标记 java.util.Locale getDefault() 方法的实例。

标记此方法的原因是它存在相关联的行为更改。根据 Java 7 中的 Java SE 7 and JDK 7 Compatibility 文档,用户现在可以访问显示语言环境(例如,字符串的可视表示)或格式语言环境(例如,字符串的实际格式)。 为了帮助完成此目的,Java 7 添加了新方法:getDefault(Locale.Catgory cat),其中 Locale.Category 是具有 DISPLAYFORMAT 选项的新枚举。使用此新方法,用户可以获取感兴趣的特定语言环境。

此规则所标记的旧方法 getDefault() 已更新为等效于 getDefault(Locale.DISPLAY) 调用。在 Java 7 之前,用来返回到的 getDefault() 方法等效于 getDefault(Locale.FORMAT)

显示语言环境确定数据在用户界面(例如窗口或对话框)上的显示方式。例如,可以采用与主机系统不同的语言来显示数据。

格式语言环境确定数据的格式化方式。例如,使用美国格式语言环境,日期 October 4, 2011(2011 年 10 月 4 日)会显示为 10/04/2011,而使用英国格式语言环境时,同一日期会显示为 04/10/2011。

用户需要评估代码,并确定代码是否受行为更改的影响,继续进行任何适当的测试,然后对代码进行任何必要的更改。

依照该文档,如果用户要保留 JDK 6 的较旧行为,那么可以将属性 sun.locale.formatasdefault 设为 true,或者将代码更改为使用新方法 getDefault(Locale.Category cat)。在这种情况下,cat 参数将会是 Locale.Category.FORMAT

有关更多信息,请参阅 Java 7 API: