Класс ResourceBundle.Control
- java.lang.Object
-
- java.util.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 | Только формат класса |
static List<String> | FORMAT_DEFAULT | Формат по умолчанию |
static List<String> | FORMAT_PROPERTIES | Только формат свойств |
static long | TTL_DONT_CACHE | Постоянная величина времени жизни для некеширования загруженных экземпляров ресурсов. |
static long | TTL_NO_EXPIRATION_CONTROL | Постоянная величина времени жизни для отключения контроля истечения срока действия загруженных экземпляров ресурсов в кэше. |
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | Control() | Единственный конструктор. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
List<Locale> | getCandidateLocales(String baseName,
Locale locale) | Возвращает список |
static ResourceBundle.Control | getControl(List<String> formats) | Возвращает |
Locale | getFallbackLocale(String baseName,
Locale locale) | Возвращает |
List<String> | getFormats(String baseName) | Возвращает список |
static ResourceBundle.Control | getNoFallbackControl(List<String> formats) | Возвращает |
long | getTimeToLive(String baseName,
Locale locale) | Возвращает значение времени жизни (TTL) для ресурсов, загруженных с помощью данного |
boolean | needsReload(String baseName,
Locale locale,
String format,
ClassLoader loader,
ResourceBundle bundle,
long loadTime) | Определяет, нужно ли перезагружать истекшие |
ResourceBundle | newBundle(String baseName,
Locale locale,
String format,
ClassLoader loader,
boolean reload) | Создаёт экземпляр ресурса для заданного имени ресурса, формата и локали, используя заданный загрузчик классов, при необходимости. |
String | toBundleName(String baseName,
Locale locale) | Преобразует заданное |
String | toResourceName(String bundleName,
String 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
Постоянная времени жизни для предотвращения кэширования загруженных экземпляров набора ресурсов.
TTL_NO_EXPIRATION_CONTROL
public static final long TTL_NO_EXPIRATION_CONTROL
Постоянная времени жизни для отключения контроля истечения срока действия для загруженных экземпляров набора ресурсов в кэше.
Конструкторы
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— базовое имя набора ресурсов, полное имя класса - Возвращает:
ListString, содержащий форматы для загрузки наборов ресурсов.- Исключения:
-
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, чьи значения конечных компонентов являются пустыми строками, опускаются.
- Для входной
Localeсо значением сценария, равным пустой строке, добавляются кандидатныеLocale, опуская конечный компонент по одному, как показано ниже:- [L, C, V]
- [L, C]
- [L]
-
Locale.ROOT
- Для входной
Localeсо значением сценария, отличным от пустой строки, добавляются кандидатныеLocale, опуская конечный компонент до языка, а затем добавляются кандидаты, сгенерированные изLocaleс восстановленными страной и вариантом:- [L, S, C, V]
- [L, S, C]
- [L, S]
- [L, C, V]
- [L, C]
- [L]
-
Locale.ROOT
- Для входной
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
- Специальные случаи для китайского языка. Когда входная
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
- Специальные случаи для норвежского языка. И
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