为什么 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 的代码支持这些功能。