【问题标题】:Why is Locale final in Java?为什么语言环境在 Java 中是最终的?
【发布时间】:2019-03-24 11:36:18
【问题描述】:

java.util.Locale 类被声明为final,这意味着没有任何东西可以扩展它。

ICU4J project 编写了这个类的扩展——com.ibm.icu.util.ULocale(也是final),但正因为如此,它不能继承或方便地使用而不是Locale

这是什么原因?

【问题讨论】:

    标签: java internationalization icu4j


    【解决方案1】:

    由于与语言环境的系统深度集成,扩展语言环境并非易事,无需修改底层系统即可。

    如果您可以扩展Locale 以添加一些额外的属性,那么当前接受Locale 的类都不知道如何处理它们。

    假设您有一个仅支持 Locale 的 JDK,并且您可以传入具有更深入支持的 ULocale(例如指定要使用的日历和数字除了底层语言环境的默认值),那么您不能指望接受传统 JDK Locale 的代码支持这些功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-22
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      相关资源
      最近更新 更多