Почему Locale окончательный в Java? - PullRequest
0 голосов
/ 19 октября 2018

Класс java.util.Locale объявлен как final, что означает, что ничто не может его расширить.

Проект ICU4J написал расширение этогокласс - com.ibm.icu.util.ULocale (что также final), но из-за этого он не может наследоваться или легко использоваться вместо Locale.

В чем причинаэто будет?

1 Ответ

0 голосов
/ 19 октября 2018

Расширение локалей - это не то, что легко сделать без изменения базовой системы из-за глубокой интеграции в те системы, которые есть у локалей.

Если вы могли бы расширить Localeчтобы добавить некоторые дополнительные свойства, ни один из классов, которые в настоящее время принимают Locale, не будет знать, как с ними обращаться.

Предполагая, что у вас есть JDK с простой поддержкой Locale, и вы могли бы передайте ULocale, который имеет более глубокую поддержку (например, указание календаря и цифр для использования, отличных от значения по умолчанию для основного языкового стандарта), тогда вы не можете ожидать код, который принимает традиционный JDK Locale для поддержки этих функций.

...