【发布时间】:2019-03-24 11:36:18
【问题描述】:
java.util.Locale 类被声明为final,这意味着没有任何东西可以扩展它。
ICU4J project 编写了这个类的扩展——com.ibm.icu.util.ULocale(也是final),但正因为如此,它不能继承或方便地使用而不是Locale。
这是什么原因?
【问题讨论】:
标签: java internationalization icu4j
java.util.Locale 类被声明为final,这意味着没有任何东西可以扩展它。
ICU4J project 编写了这个类的扩展——com.ibm.icu.util.ULocale(也是final),但正因为如此,它不能继承或方便地使用而不是Locale。
这是什么原因?
【问题讨论】:
标签: java internationalization icu4j
由于与语言环境的系统深度集成,扩展语言环境并非易事,无需修改底层系统即可。
如果您可以扩展Locale 以添加一些额外的属性,那么当前接受Locale 的类都不知道如何处理它们。
假设您有一个仅支持 Locale 的 JDK,并且您可以传入具有更深入支持的 ULocale(例如指定要使用的日历和数字除了底层语言环境的默认值),那么您不能指望接受传统 JDK Locale 的代码支持这些功能。
【讨论】: