Класс ResourceBundle.Control

Вложенный класс:
ResourceBundle
public static class ResourceBundle.Control
extends Object

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

ResourceBundle.Control предназначен для приложения, развернутого в модуле без имени, например, для поддержки ресурсов в нестандартных форматах или пакета локализованных ресурсов в нетрадиционной конвенции. ResourceBundleProvider является заменой для ResourceBundle.Control при миграции к модулям. UnsupportedOperationException будет брошен, когда метод-фабрика, принимающий параметр 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 искать только ресурсы, основанные на свойствах.

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() {
         ...
     }
 }
Примечание API:
ResourceBundle.Control не поддерживается в именованных модулях. Если метод ResourceBundle.getBundle с ResourceBundle.Control вызывается в именованном модуле, метод будет выбрасывать UnsupportedOperationException. Любые поставщики сервисов ResourceBundleControlProvider игнорируются в именованных модулях.
С:
1.6
См. также:
ResourceBundleProvider

Поля

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

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

static List<String> FORMAT_DEFAULT

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

static List<String> FORMAT_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.", зарезервированы для будущих расширений и не должны использоваться для приложений.

Не обязательно возвращать неизменяемый (unmodifiable) 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 загружает только базовый набор в качестве результирующего набора ресурсов.

Не обязательно возвращать неизменяемый (unmodifiable) 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:

Locale("ja", "", "XX")
     Locale("ja")
     Locale.ROOT
. И если наборы ресурсов для "ja" и "" Locale найдены, то путь поиска ресурсов во время выполнения (цепь предков) будет:
Messages_ja -> Messages
Параметры:
baseName — базовое имя ресурсного пула, полное имя класса
locale — локаль, для которой требуется ресурсный пул
Возвращает:
список потенциальных Locale для заданной locale
Исключение:
NullPointerException — если baseName или locale имеют null значение

getFallbackLocale

public Locale getFallbackLocale(String baseName,
                                Locale locale)

Возвращает Locale, который будет использоваться в качестве резервной локали для дальнейшего поиска ресурсных пулов фабричным методом ResourceBundle.getBundle. Этот метод вызывается из фабричного метода каждый раз, когда для baseName и 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, это указывает, что этот метод вызывается потому, что ранее загруженный ресурсный пул устарел.

Требования к реализации:
Ресурсные пулы в именованных модулях подчиняются правилам инкапсуляции, указанным в Module.getResourceAsStream. Ресурсный пул в именованном модуле, видимом для данного загрузчика классов, доступен, когда пакет файла ресурса, соответствующий ресурсному пулу, открыт безусловно.

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

  • Имя пула получается вызовом toBundleName(baseName, locale).
  • Если format имеет значение "java.class", то Class, указанный именем пула, загружается с помощью заданного загрузчика классов. Если Class найден и доступен, то инициализируется ResourceBundle. Ресурсный пул доступен, если пакет файла класса пула открыт безусловно; в противном случае будет выброшено исключение IllegalAccessException. Обратите внимание, что флаг 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 — если произошла ошибка при чтении ресурсов с использованием операций ввода-вывода
См. также:
ResourceBundleProvider.getBundle(String, Locale)

getTimeToLive

public long getTimeToLive(String baseName,
                          Locale locale)

Возвращает значение времени жизни (TTL) для ресурсных пулов, загруженных с помощью этого ResourceBundle.Control. Положительные значения TTL указывают количество миллисекунд, которое пул может находиться в кэше, не проверяясь по исходным данным, из которых он был создан. Значение 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 значение

needsReload

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
См. также:
AbstractResourceBundleProvider.toBundleName(String, Locale)

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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/ResourceBundle.Control.html

Spec-Zone .ru
спецификации, руководства, описания, API