类java.util.Locale
被声明为final
,这意味着没有东西可以扩展它。
ICU4J project编写了此类的扩展-com.ibm.icu.util.ULocale
(也为final
),但由于这个原因,它不能继承或容易代替{{ 1}}。
这是什么原因?
答案 0 :(得分:1)
由于语言环境已与这些系统深度集成,因此扩展语言环境在不修改底层系统的情况下不容易实现。
如果您可以扩展Locale
以添加一些其他属性,那么当前接受Locale
的所有类都不知道如何处理它们。
假设您的JDK仅具有Locale
支持,并且您可以传递具有更深入支持的ULocale
(例如指定日历)和数字使用默认语言环境(而不是基础语言环境的默认语言),那么您就不能期望接受传统JDK Locale
的代码支持这些功能。