为什么 Locale 在 Java 中是最终的?
Why is Locale final in Java?
class java.util.Locale
被声明为 final
,这意味着没有任何东西可以扩展它。
ICU4J project have written an extension of this class - com.ibm.icu.util.ULocale
(也就是final
),但也正因为如此,它不能继承或被方便地代替Locale
。
这是什么原因?
由于语言环境已深度集成到那些系统中,所以在不修改底层系统的情况下扩展语言环境并不是一件容易的事。
如果您 可以 扩展 Locale
以添加一些额外的属性,那么 类 的 none 当前接受 Locale
会知道如何处理它们。
假设你有一个 JDK 只需要 Locale
支持并且你 可以 传递一个 ULocale
有更多的支持-深度支持(例如指定要使用的日历和数字,而不是基础语言环境的默认设置),那么您不能指望接受传统 JDK Locale
的代码支持这些功能。
class java.util.Locale
被声明为 final
,这意味着没有任何东西可以扩展它。
ICU4J project have written an extension of this class - com.ibm.icu.util.ULocale
(也就是final
),但也正因为如此,它不能继承或被方便地代替Locale
。
这是什么原因?
由于语言环境已深度集成到那些系统中,所以在不修改底层系统的情况下扩展语言环境并不是一件容易的事。
如果您 可以 扩展 Locale
以添加一些额外的属性,那么 类 的 none 当前接受 Locale
会知道如何处理它们。
假设你有一个 JDK 只需要 Locale
支持并且你 可以 传递一个 ULocale
有更多的支持-深度支持(例如指定要使用的日历和数字,而不是基础语言环境的默认设置),那么您不能指望接受传统 JDK Locale
的代码支持这些功能。