为什么Locale在Java中是final?

时间:2018-10-19 14:41:49

标签: java internationalization icu4j

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

ICU4J project编写了此类的扩展-com.ibm.icu.util.ULocale(也为final),但由于这个原因,它不能继承或容易代替{{ 1}}。

这是什么原因?

1 个答案:

答案 0 :(得分:1)

由于语言环境已与这些系统深度集成,因此扩展语言环境在不修改底层系统的情况下不容易实现。

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

假设您的JDK仅具有Locale支持,并且您可以传递具有更深入支持的ULocale(例如指定日历)和数字使用默认语言环境(而不是基础语言环境的默认语言),那么您就不能期望接受传统JDK Locale的代码支持这些功能。