Spec-Zone.ru › OpenJDK 8

Класс ResourceBundle.Control

  • java.lang.Object
    • java.util.ResourceBundle.Control
Вложенный класс:
ResourceBundle

public static class ResourceBundle.Control
extends Object

ResourceBundle.Control определяет набор методов обратного вызова, которые вызываются методом ResourceBundle.getBundle во время процесса загрузки ресурсов. Другими словами, ResourceBundle.Control взаимодействует с фабричными методами для загрузки ресурсов. По умолчанию методы обратного вызова предоставляют информацию, необходимую фабричным методам для выполнения стандартного поведения.

Помимо методов обратного вызова, методы toBundleName и toResourceName определены в первую очередь для удобства реализации методов обратного вызова. Однако, метод toBundleName можно переопределить, чтобы использовать различные соглашения об организации и упаковке локализованных ресурсов. Метод toResourceName final для избежания использования неправильных разделителей имен ресурсов и классов.

Два фабричных метода, getControl(List) и getNoFallbackControl(List), предоставляют ResourceBundle.Control экземпляры, реализующие общие варианты стандартного процесса загрузки ресурсов.

Форматы, возвращаемые методом getFormats, и кандидаты на локаль, возвращаемые методом getCandidateLocales, должны быть согласованы во всех ResourceBundle.getBundle вызовах для одного и того же базового ресурса. В противном случае, методы ResourceBundle.getBundle могут вернуть нежелаемые ресурсы. Например, если только "java.class" возвращается методом getFormats для первого вызова ResourceBundle.getBundle и только "java.properties" для второго вызова, то второй вызов вернёт кешированный результат, полученный во время первого вызова.

Экземпляр ResourceBundle.Control должен быть потокобезопасным, если используется одновременно несколькими потоками. ResourceBundle.getBundle не синхронизируется для вызовов методов ResourceBundle.Control. Стандартные реализации методов потокобезопасны.

Приложения могут указать ResourceBundle.Control экземпляры, возвращаемые фабричными методами getControl или созданные из подкласса ResourceBundle.Control, для настройки процесса загрузки ресурсов. Ниже приведены примеры изменения стандартного процесса загрузки ресурсов.

Пример 1

Следующий код позволяет ResourceBundle.getBundle искать только ресурсы в формате properties.

import java.util.*;
 import static java.util.ResourceBundle.Control.*;
 ...
 ResourceBundle bundle =
   ResourceBundle.getBundle("MyResources", new Locale("fr", "CH"),
                            ResourceBundle.Control.getControl(FORMAT_PROPERTIES));
Учитывая ресурсы в примере примера в описании ResourceBundle.getBundle, этот ResourceBundle.getBundle вызов загружает MyResources_fr_CH.properties, родитель которого MyResources_fr.properties, родитель которого MyResources.properties. (MyResources_fr_CH.properties не скрыт, но MyResources_fr_CH.class скрыт.)

Пример 2

Следующий пример демонстрирует загрузку ресурсов в формате XML с помощью Properties.loadFromXML.

ResourceBundle rb = ResourceBundle.getBundle("Messages",
     new ResourceBundle.Control() {
         public List<String> getFormats(String baseName) {
             if (baseName == null)
                 throw new NullPointerException();
             return Arrays.asList("xml");
         }
         public ResourceBundle newBundle(String baseName,
                                         Locale locale,
                                         String format,
                                         ClassLoader loader,
                                         boolean reload)
                          throws IllegalAccessException,
                                 InstantiationException,
                                 IOException {
             if (baseName == null || locale == null
                   || format == null || loader == null)
                 throw new NullPointerException();
             ResourceBundle bundle = null;
             if (format.equals("xml")) {
                 String bundleName = toBundleName(baseName, locale);
                 String resourceName = toResourceName(bundleName, format);
                 InputStream stream = null;
                 if (reload) {
                     URL url = loader.getResource(resourceName);
                     if (url != null) {
                         URLConnection connection = url.openConnection();
                         if (connection != null) {
                             // Disable caches to get fresh data for
                             // reloading.
                             connection.setUseCaches(false);
                             stream = connection.getInputStream();
                         }
                     }
                 } else {
                     stream = loader.getResourceAsStream(resourceName);
                 }
                 if (stream != null) {
                     BufferedInputStream bis = new BufferedInputStream(stream);
                     bundle = new XMLResourceBundle(bis);
                     bis.close();
                 }
             }
             return bundle;
         }
     });

 ...

 private static class XMLResourceBundle extends ResourceBundle {
     private Properties props;
     XMLResourceBundle(InputStream stream) throws IOException {
         props = new Properties();
         props.loadFromXML(stream);
     }
     protected Object handleGetObject(String key) {
         return props.getProperty(key);
     }
     public Enumeration<String> getKeys() {
         ...
     }
 }
С:
1.6

Поля

Модификатор и тип Поле и описание
static List<String> FORMAT_CLASS

Только формат класса List, содержащий "java.class".

static List<String> FORMAT_DEFAULT

Стандартный формат List, содержащий строки "java.class" и "java.properties" в этом порядке.

static List<String> FORMAT_PROPERTIES

Только формат properties List, содержащий "java.properties".

static long TTL_DONT_CACHE

Константа времени жизни для отключения кэширования загруженных ресурсов.

static long TTL_NO_EXPIRATION_CONTROL

Константа времени жизни для отключения контроля истечения срока действия загруженных ресурсов в кэше.

Конструкторы

Модификатор Конструктор и описание
protected Control()

Единственный конструктор.

Методы

Модификатор и тип Метод и описание
List<Locale> getCandidateLocales(String baseName, Locale locale)

Возвращает List Locale в качестве кандидатов на локаль для baseName и locale.

static ResourceBundle.Control getControl(List<String> formats)

Возвращает ResourceBundle.Control, в котором метод getFormats возвращает указанный formats.

Locale getFallbackLocale(String baseName, Locale locale)

Возвращает Locale в качестве резервной локали для последующего поиска ресурсов методом ResourceBundle.getBundle.

List<String> getFormats(String baseName)

Возвращает List String с форматами для загрузки ресурсов для данного baseName.

static ResourceBundle.Control getNoFallbackControl(List<String> formats)

Возвращает ResourceBundle.Control в котором метод getFormats возвращает указанный formats и метод getFallbackLocale возвращает null.

long getTimeToLive(String baseName, Locale locale)

Возвращает значение времени жизни (TTL) для ресурсов, загруженных в рамках данного ResourceBundle.Control.

boolean needsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime)

Определяет, нужно ли перезагружать истекшие bundle в кэше на основе времени загрузки, указанного в loadTime или по другим критериям.

ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload)

Создаёт экземпляр ресурсов для данного имени ресурса, формата и локали, используя указанный загрузчик классов при необходимости.

String toBundleName(String baseName, Locale locale)

Преобразует заданное baseName и locale в имя ресурса.

String toResourceName(String bundleName, String suffix)

Преобразует заданное bundleName в формат, необходимый методу ClassLoader.getResource, заменяя все вхождения '.' в bundleName на '/' и добавляя '.' и указанный файл suffix.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Поля

FORMAT_DEFAULT

public static final List<String> FORMAT_DEFAULT

Формат по умолчанию List, который содержит строки "java.class" и "java.properties", в этом порядке. Этот List является неизменяемым.

См. также:
getFormats(String)

FORMAT_CLASS

public static final List<String> FORMAT_CLASS

Формат только для классов List, содержащий "java.class". Этот List является неизменяемым.

См. также:
getFormats(String)

FORMAT_PROPERTIES

public static final List<String> FORMAT_PROPERTIES

Формат только для свойств List, содержащий "java.properties". Этот List является неизменяемым.

См. также:
getFormats(String)

TTL_DONT_CACHE

public static final long TTL_DONT_CACHE

Константа времени жизни для некеширования загруженных экземпляров ресурсных пакетов.

См. также:
getTimeToLive(String, Locale), Значения постоянных полей

TTL_NO_EXPIRATION_CONTROL

public static final long TTL_NO_EXPIRATION_CONTROL

Константа времени жизни для отключения контроля истечения срока действия загруженных экземпляров ресурсных пакетов в кэше.

См. также:
getTimeToLive(String, Locale), Значения постоянных полей

Конструкторы

Control

protected Control()

Единственный конструктор. (Для вызова конструкторами подклассов, обычно неявным образом.)

Методы

getControl

public static final ResourceBundle.Control getControl(List<String> formats)

Возвращает ResourceBundle.Control, в котором метод getFormats возвращает указанные formats. formats должен быть равен одному из FORMAT_PROPERTIES, FORMAT_CLASS или FORMAT_DEFAULT. ResourceBundle.Control экземпляры, возвращаемые этим методом, являются одиночными и потокобезопасными.

Указание FORMAT_DEFAULT эквивалентно созданию экземпляра класса ResourceBundle.Control, за исключением того, что этот метод возвращает одиночку.

Параметры:
formats - форматы, которые должны возвращаться методом ResourceBundle.Control.getFormats
Возвращает:
ResourceBundle.Control поддерживающий указанные formats
Исключения:
NullPointerException - если formats является null
IllegalArgumentException - если formats неизвестен

getNoFallbackControl

public static final ResourceBundle.Control getNoFallbackControl(List<String> formats)

Возвращает ResourceBundle.Control, в котором метод getFormats возвращает указанные formats, а метод getFallbackLocale возвращает null. formats должен быть равен одному из FORMAT_PROPERTIES, FORMAT_CLASS или FORMAT_DEFAULT. ResourceBundle.Control экземпляры, возвращаемые этим методом, являются одиночными и потокобезопасными.

Параметры:
formats - форматы, которые должны возвращаться методом ResourceBundle.Control.getFormats
Возвращает:
ResourceBundle.Control поддерживающий указанные formats без поддержки обратного вызова Locale
Исключения:
NullPointerException - если formats является null
IllegalArgumentException - если formats неизвестен

getFormats

public List<String> getFormats(String baseName)

Возвращает List String содержащий форматы, используемые для загрузки ресурсных пакетов для данного baseName. Метод фабрики ResourceBundle.getBundle пытается загрузить ресурсные пакеты с форматами в указанном порядке списка. Список, возвращаемый этим методом, должен содержать как минимум один String. Предустановленные форматы — "java.class" для ресурсных пакетов на основе классов и "java.properties" для ресурсных пакетов на основе свойств. Строки, начинающиеся с "java." зарезервированы для будущих расширений и не должны использоваться приложениями для определения форматов.

Не является обязательным возвращать неизменяемый (немодифицируемый) List. Однако, возвращённый List не должен быть изменён после возвращения им методом getFormats.

Реализация по умолчанию возвращает FORMAT_DEFAULT, чтобы метод фабрики ResourceBundle.getBundle сначала искал ресурсные пакеты на основе классов, а затем — на основе свойств.

Параметры:
baseName - базовое имя ресурсного пакета, полное имя класса
Возвращает:
List String содержащий форматы для загрузки ресурсных пакетов.
Исключения:
NullPointerException - если baseName null
См. также:
FORMAT_DEFAULT, FORMAT_CLASS, FORMAT_PROPERTIES

getCandidateLocales

public List<Locale> getCandidateLocales(String baseName,
                                        Locale locale)

Возвращает List из Locale в качестве кандидатов на языковые локали для baseName и locale. Этот метод вызывается методом-фабрикой ResourceBundle.getBundle каждый раз, когда метод-фабрика пытается найти пакет ресурсов для целевой Locale.

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

Если заданная локаль равна Locale.ROOT (корневая локаль), должен быть возвращён List, содержащий только корневую Locale. В этом случае метод-фабрика ResourceBundle.getBundle загружает только базовый пакет в качестве результирующего пакета ресурсов.

Не является обязательным возвращать неизменяемый (немодифицируемый) List. Однако возвращённый List не должен изменяться после того, как он был возвращён методом getCandidateLocales.

Реализация по умолчанию возвращает List, содержащий Locale с использованием правил, описанных ниже. В описании ниже L, S, C и V соответственно представляют непустой язык, сценарий, страну и вариант. Например, [L, C] представляет Locale, который имеет непустые значения только для языка и страны. Форма L("xx") означает, что значение (непустое) языка равно "xx". Во всех случаях Locale с пустыми значениями конечных компонентов опускаются.

  1. Для входной Locale со значением сценария, равным пустой строке, добавляются кандидатские Locale с пропусканием конечного компонента по одному, как показано ниже:
    • [L, C, V]
    • [L, C]
    • [L]
    • Locale.ROOT
  2. Для входной Locale со значением сценария, отличным от пустой строки, добавляются кандидатские Locale с пропусканием конечного компонента до языка, затем добавляются кандидаты, сгенерированные из Locale с восстановленными страной и вариантом:
    • [L, S, C, V]
    • [L, S, C]
    • [L, S]
    • [L, C, V]
    • [L, C]
    • [L]
    • Locale.ROOT
  3. Для входной Locale со значением варианта, состоящим из нескольких подтегов, разделённых нижним подчёркиванием, генерируются кандидатские Locale с пропусканием подтегов варианта по одному, затем вставляются после каждого вхождения Locale со значением полного варианта в исходном списке. Например, если вариант состоит из двух подтегов V1 и V2:
    • [L, S, C, V1, V2]
    • [L, S, C, V1]
    • [L, S, C]
    • [L, S]
    • [L, C, V1, V2]
    • [L, C, V1]
    • [L, C]
    • [L]
    • Locale.ROOT
  4. Специальные случаи для китайского языка. Когда у входной Locale язык "zh" (китайский) и пустое значение сценария, могут быть предоставлены либо "Hans" (упрощённый), либо "Hant" (традиционный), в зависимости от страны. Когда страна "CN" (Китай) или "SG" (Сингапур), используется "Hans". Когда страна "HK" (Гонконг), "MO" (Макао) или "TW" (Тайвань), используется "Hant". Во всех других странах или при пустой стране сценарий не предоставляется. Например, для Locale("zh", "CN") , список кандидатов будет:
    • [L("zh"), S("Hans"), C("CN")]
    • [L("zh"), S("Hans")]
    • [L("zh"), C("CN")]
    • [L("zh")]
    • Locale.ROOT
    Для Locale("zh", "TW"), список кандидатов будет:
    • [L("zh"), S("Hant"), C("TW")]
    • [L("zh"), S("Hant")]
    • [L("zh"), C("TW")]
    • [L("zh")]
    • Locale.ROOT
  5. Специальные случаи для норвежского языка. И Locale("no", "NO", "NY"), и Locale("nn", "NO") представляют норвежский нюнорск. Когда языком локали является "nn", генерируется стандартный список кандидатов до [L("nn")], а затем добавляются следующие кандидаты:
    • [L("no"), C("NO"), V("NY")]
    • [L("no"), C("NO")]
    • [L("no")]
    • Locale.ROOT
    Если локаль точно Locale("no", "NO", "NY"), она сначала преобразуется в Locale("nn", "NO"), а затем выполняется вышеуказанная процедура.

    Также Java рассматривает язык "no" как синоним норвежского букмоля "nb". За исключением единственного случая Locale("no", "NO", "NY") (обработанного выше), когда у входной Locale язык "no" или "nb", кандидатские Locale с кодами языка "no" и "nb" чередуются, сначала используя запрашиваемый язык, затем его синоним. Например, Locale("nb", "NO", "POSIX") генерирует следующий список кандидатов:

    • [L("nb"), C("NO"), V("POSIX")]
    • [L("no"), C("NO"), V("POSIX")]
    • [L("nb"), C("NO")]
    • [L("no"), C("NO")]
    • [L("nb")]
    • [L("no")]
    • Locale.ROOT
    Locale("no", "NO", "POSIX") сгенерирует тот же список, за исключением того, что локали с "no" будут появляться перед соответствующими локалями с "nb".

Реализация по умолчанию использует ArrayList, которую переопределяющие реализации могут изменить перед возвращением её вызывающей стороне. Однако подкласс не должен изменять её после возвращения методом getCandidateLocales.

Например, если заданная baseName - "Messages", а заданная locale - Locale("ja", "", "XX"), тогда List из Locale возвращается. А если пакеты ресурсов для "ja" и "" Locale найдены, то путь поиска ресурсов во время выполнения (цепь предков) равен

Messages_ja -> Messages

Параметры:
baseName - базовое имя пакета ресурсов, полное имя класса
locale - локаль, для которой требуется пакет ресурсов
Возвращает:
List кандидатских Locale для данной locale
Выбрасывает:
NullPointerException - если baseName или locale - null

getFallbackLocale

public Locale getFallbackLocale(String baseName,
                                Locale locale)

Возвращает Locale для использования в качестве локали по умолчанию для дальнейших поисков пакетов ресурсов методом-фабрикой ResourceBundle.getBundle. Этот метод вызывается из метода-фабрики каждый раз, когда не был найден результирующий пакет ресурсов для baseName и locale, где locale - это либо параметр для ResourceBundle.getBundle, либо предыдущая локаль по умолчанию, возвращённая этим методом.

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

Реализация по умолчанию возвращает стандартную Locale, если заданная locale не является стандартной. В противном случае возвращается null.

Параметры:
baseName - базовое имя пакета ресурсов, полное имя класса, для которого ResourceBundle.getBundle не смог найти пакеты ресурсов (кроме базового)
locale - Locale, для которого ResourceBundle.getBundle не смог найти пакеты ресурсов (кроме базового)
Возвращает:
Locale для поиска по умолчанию или null, если дальнейший поиск по умолчанию не требуется.
Выбрасывает:
NullPointerException - если baseName или locale - null

newBundle

public ResourceBundle newBundle(String baseName,
                                Locale locale,
                                String format,
                                ClassLoader loader,
                                boolean reload)
                         throws IllegalAccessException,
                                InstantiationException,
                                IOException

Инициализирует пакет ресурсов для заданного имени пакета, формата и региона, используя заданный загрузчик классов, если необходимо. Данный метод возвращает null , если пакет ресурсов недоступен для заданных параметров. Если пакет ресурсов не может быть инициализирован из-за непредвиденной ошибки, ошибка должна быть сообщена путём выброса исключения Error или Exception вместо простого возвращения null.

Если флаг reload имеет значение true, это указывает на то, что этот метод вызывается потому, что ранее загруженный пакет ресурсов истек.

Реализация по умолчанию инициализирует ResourceBundle следующим образом.

  • Имя пакета получается путём вызова toBundleName(baseName, locale).
  • Если format имеет значение "java.class", класс, указанный именем пакета, загружается путём вызова ClassLoader.loadClass(String). Затем, ResourceBundle инициализируется путём вызова Class.newInstance(). Обратите внимание, что флаг reload игнорируется при загрузке пакетов ресурсов на основе классов в этой реализации по умолчанию.
  • Если format имеет значение "java.properties", вызывается toResourceName(bundlename, "properties") для получения имени ресурса. Если reload имеет значение true, вызывается load.getResource для получения URL для создания URLConnection. Этот URLConnection используется для отключения кэшей базовых слоёв загрузки ресурсов и для получения InputStream. В противном случае вызывается loader.getResourceAsStream для получения InputStream. Затем, PropertyResourceBundle конструируется с использованием InputStream.
  • Если format ни "java.class", ни "java.properties", выбрасывается IllegalArgumentException.
Параметры:
baseName - базовое имя пакета ресурсов, полное имя класса
locale - регион, для которого должен быть инициализирован пакет ресурсов
format - формат пакета ресурсов для загрузки
loader - ClassLoader для загрузки пакета
reload - флаг, указывающий на перезагрузку пакета; true при перезагрузке истекшего пакета ресурсов, false в противном случае
Возвращает:
экземпляр пакета ресурсов или null , если ни один не был найден.
Выбрасывает:
NullPointerException - если bundleName, locale, format, или loader имеет значение null, или если null возвращается методом toBundleName
IllegalArgumentException - если format неизвестен или если найденный ресурс для заданных параметров содержит некорректные данные.
ClassCastException - если загруженный класс не может быть преобразован в ResourceBundle
IllegalAccessException - если класс или его конструктор без параметров недоступен.
InstantiationException - если инициализация класса завершается неудачно по другой причине.
ExceptionInInitializerError - если инициализация, вызванная этим методом, завершается неудачно.
SecurityException - Если менеджер безопасности присутствует, и создание новых экземпляров запрещено. См. Class.newInstance() для подробностей.
IOException - если произошла ошибка при чтении ресурсов с использованием операций ввода/вывода

Срок действия

public long getTimeToLive(String baseName,
                          Locale locale)

Возвращает значение срока действия (TTL) для пакетов ресурсов, загружаемых в этом ResourceBundle.Control. Положительные значения срока действия указывают количество миллисекунд, в течение которого пакет может храниться в кэше без проверки по исходным данным, из которых он был создан. Значение 0 указывает на то, что пакет должен быть проверен каждый раз при его получении из кэша. TTL_DONT_CACHE указывает, что загруженные пакеты ресурсов не помещаются в кэш. TTL_NO_EXPIRATION_CONTROL указывает, что загруженные пакеты ресурсов помещаются в кэш без контроля истечения срока действия.

Срок действия влияет только на процесс загрузки пакета методом фабрики ResourceBundle.getBundle. То есть, если фабричный метод находит в кэше истекший пакет ресурсов, фабричный метод вызывает метод needsReload для определения необходимости перезагрузки пакета ресурсов. Если needsReload возвращает true, экземпляр кэшированного пакета ресурсов удаляется из кэша. В противном случае экземпляр остаётся в кэше, обновлённый с новым значением TTL, возвращаемым этим методом.

Все кэшированные пакеты ресурсов могут быть удалены из кэша из-за ограничений памяти среды выполнения. Возврат большого положительного значения не означает блокировку загруженных пакетов ресурсов в кэше.

Реализация по умолчанию возвращает TTL_NO_EXPIRATION_CONTROL.

Параметры:
baseName - базовое имя пакета ресурсов, для которого задаётся значение истечения срока действия.
locale - регион пакета ресурсов, для которого задаётся значение истечения срока действия.
Возвращает:
время (0 или положительный временной сдвиг в миллисекундах от кэшированного времени) для истечения срока действия загруженных пакетов в кэше, TTL_NO_EXPIRATION_CONTROL для отключения контроля истечения срока действия или TTL_DONT_CACHE для отключения кэширования.
Выбрасывает:
NullPointerException - если baseName или locale имеет значение null

необходима перезагрузка

public boolean needsReload(String baseName,
                           Locale locale,
                           String format,
                           ClassLoader loader,
                           ResourceBundle bundle,
                           long loadTime)

Определяет, необходимо ли перезагружать истекший bundle в кэше на основе времени загрузки, заданного loadTime, или по другим критериям. Метод возвращает true, если перезагрузка требуется; false в противном случае. loadTime представляет собой временной сдвиг в миллисекундах с момента Calendar Эпохи. Вызывающий метод фабрики ResourceBundle.getBundle вызывает этот метод на экземпляре ResourceBundle.Control , используемом для текущего вызова, а не на экземпляре, используемом в вызове, который изначально загрузил пакет ресурсов.

Реализация по умолчанию сравнивает loadTime и время последней модификации исходных данных пакета ресурсов. Если установлено, что исходные данные были изменены с момента loadTime, возвращается true. В противном случае возвращается false. Эта реализация предполагает, что заданный format — это та же строка, что и его расширение файла, если это не один из стандартных форматов, "java.class" или "java.properties".

Параметры:
baseName - базовое имя пакета ресурсов, полное имя класса
locale - регион, для которого должен быть инициализирован пакет ресурсов
format - формат пакета ресурсов для загрузки
loader - ClassLoader для загрузки пакета
bundle - экземпляр пакета ресурсов, который истек в кэше
loadTime - время загрузки bundle и помещения в кэш
Возвращает:
true , если истекший пакет необходимо перезагрузить; false в противном случае.
Выбрасывает:
NullPointerException - если baseName, locale, format, loader, или bundle имеет значение null

toBundleName

public String toBundleName(String baseName,
                           Locale locale)

Преобразует заданное baseName и locale в имя пакета. Этот метод вызывается из реализации по умолчанию методов newBundle и needsReload.

Эта реализация возвращает следующее значение:

baseName + "_" + language + "_" + script + "_" + country + "_" + variant
, где language, script, country, и variant представляют собой значения языка, письменности, страны и варианта locale соответственно. Конечные компоненты со значениями, равными пустым строкам, опускаются вместе с предшествующим '_'. Если значение письменности пустое, значение письменности опускается вместе с предшествующим '_'. Если все значения являются пустыми строками, возвращается baseName.

Например, если baseName имеет значение "baseName" и locale имеет значение Locale("ja", "", "XX"), возвращается "baseName_ja_ _XX". Если заданный регион имеет значение Locale("en"), возвращается "baseName_en".

Переопределение этого метода позволяет приложениям использовать разные соглашения при организации и упаковке локализованных ресурсов.

Параметры:
baseName - базовое имя пакета ресурсов, полное имя класса
locale - регион, для которого должен быть загружен пакет ресурсов
Возвращает:
имя пакета для пакета ресурсов
Выбрасывает:
NullPointerException - если baseName или locale имеет значение null

toResourceName

public final String toResourceName(String bundleName,
                                   String suffix)

Преобразует заданный bundleName в форму, требуемую методом ClassLoader.getResource, заменяя все вхождения '.' в bundleName на '/' и добавляя '.' и заданный файл suffix. Например, если bundleName равно "foo.bar.MyResources_ja_JP" и suffix равно "properties", то возвращается "foo/bar/MyResources_ja_JP.properties".

Параметры:
bundleName - имя пакета
suffix - суффикс типа файла
Возвращает:
имя преобразованного ресурса
Исключения:
NullPointerException - если bundleName или suffix равно null

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API