Класс ResourceBundle.Control
- Вложенный класс:
ResourceBundle
public static class ResourceBundle.Control extends Object
ResourceBundle.Control определяет набор методов обратного вызова, которые вызываются фабричными методами ResourceBundle.getBundle в процессе загрузки пакета ресурсов. Иными словами, ResourceBundle.Control взаимодействует с фабричными методами при загрузке пакетов ресурсов. Реализация методов обратного вызова по умолчанию предоставляет информацию, необходимую фабричным методам для выполнения поведения по умолчанию. ResourceBundle.Control предназначен для приложения, развернутого в безымянном модуле, например, для поддержки пакетов ресурсов в нестандартных форматах или размещения локализованных ресурсов в нетрадиционной структуре пакетов. ResourceBundleProvider является заменой ResourceBundle.Control при переходе на модули. При вызове фабричного метода, принимающего параметр ResourceBundle.Control, будет выброшено исключение UnsupportedOperationException.
Помимо методов обратного вызова, методы toBundleName и toResourceName определены главным образом для удобства реализации методов обратного вызова. Однако метод toBundleName можно переопределить, чтобы использовать другие соглашения по организации и упаковке локализованных ресурсов. Метод toResourceName является final, чтобы избежать использования неправильных разделителей в именах ресурсов и классов.
Два фабричных метода, getControl(List) и getNoFallbackControl(List), предоставляют экземпляры ResourceBundle.Control, реализующие распространенные варианты процесса загрузки пакетов ресурсов по умолчанию.
Форматы, возвращаемые методом getFormats, и локали-кандидаты, возвращаемые методом getCandidateLocales, должны быть согласованы во всех вызовах ResourceBundle.getBundle для одного и того же базового пакета. В противном случае методы ResourceBundle.getBundle могут возвращать непредусмотренные пакеты. Например, если при первом вызове ResourceBundle.getBundle метод getFormats возвращает только "java.class", а при втором вызове — только "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", Locale.forLanguageTag("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
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final List |
FORMAT_CLASS |
Формат только для классов List, содержащий "java.class". |
static final List |
FORMAT_DEFAULT |
Формат по умолчанию List, содержащий строки "java.class" и "java.properties" именно в таком порядке. |
static final List |
FORMAT_PROPERTIES |
Формат только для свойств List, содержащий "java.properties". |
static final long |
TTL_DONT_CACHE |
Константа времени жизни для отключения кэширования загруженных экземпляров пакетов ресурсов. |
static final long |
TTL_NO_EXPIRATION_CONTROL |
Константа времени жизни для отключения контроля срока действия загруженных экземпляров пакетов ресурсов в кэше. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Единственный конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
List |
getCandidateLocales |
Возвращает List из Locale в качестве локалей-кандидатов для baseName и locale. |
static final ResourceBundle.Control |
getControl |
|
Locale |
getFallbackLocale |
Возвращает Locale, используемую в качестве резервной локали для дальнейшего поиска пакетов ресурсов фабричным методом ResourceBundle.getBundle. |
List |
getFormats |
Возвращает List из String, содержащих форматы, используемые для загрузки пакетов ресурсов для указанной baseName. |
static final ResourceBundle.Control |
getNoFallbackControl |
Возвращает ResourceBundle.Control, в котором метод getFormats возвращает указанный formats, а метод getFallbackLocale возвращает null. |
long |
getTimeToLive |
Возвращает значение времени жизни (TTL) для пакетов ресурсов, загружаемых с использованием этого ResourceBundle.Control. |
boolean |
needsReload |
Определяет, нужно ли перезагрузить просроченный bundle в кэше на основе времени загрузки, заданного loadTime, или по другим критериям. |
ResourceBundle |
newBundle |
Создает экземпляр пакета ресурсов для заданных имени пакета, формата и локали, при необходимости используя заданный загрузчик классов. |
String |
toBundleName |
Преобразует заданные baseName и locale в имя пакета. |
final String |
toResourceName |
Преобразует заданный bundleName в форму, необходимую методу ClassLoader.getResource, заменяя все вхождения '.' в bundleName на '/' и добавляя '.' и заданное имя файла suffix. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому объекту. |
protected void |
finalize() |
Устарело, подлежит удалению: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова уведомления или прерывания, либо истечения заданного интервала реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова уведомления или прерывания, либо истечения заданного интервала реального времени. |
Подробное описание полей
FORMAT_DEFAULT
public static final List<String> FORMAT_DEFAULT
List, содержащий строки "java.class" и "java.properties" в этом порядке. Этот List не подлежит изменению.- См. также:
FORMAT_CLASS
public static final List<String> FORMAT_CLASS
List, содержащий "java.class". Этот List не подлежит изменению.- См. также:
FORMAT_PROPERTIES
public static final List<String> FORMAT_PROPERTIES
List, содержащий "java.properties". Этот List не подлежит изменению.- См. также:
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.", зарезервированы для будущих расширений и не должны использоваться в форматах, определяемых приложением. Возвращать неизменяемый (модифицировать который нельзя) List не обязательно. Однако возвращённый List нельзя изменять после его возврата методом getFormats.
Реализация по умолчанию возвращает FORMAT_DEFAULT, чтобы фабричный метод ResourceBundle.getBundle сначала искал пакеты ресурсов на основе классов, а затем — на основе свойств.
- Параметры:
-
baseName— базовое имя пакета ресурсов, полное имя класса - Возвращает:
ListизString, содержащих форматы для загрузки пакетов ресурсов.- Выбрасывает:
-
NullPointerException— еслиbaseNameравен null - См. также:
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 с пустыми строками в значениях конечных компонентов пропускаются.
- Для входной
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
. Если пакеты ресурсов для Locale "ja" и "" найдены, путь поиска ресурсов во время выполнения (цепочка родителей) будет таким: 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 не найден результирующий пакет ресурсов; при этом локалью является либо параметр для 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, для полученияURLвызываетсяload.getResource, чтобы создатьURLConnection. ЭтотURLConnectionиспользуется для отключения кэша нижележащих уровней загрузки ресурсов и для полученияInputStream. В противном случае для полученияInputStreamвызываетсяloader.getResourceAsStream. Затем создаётсяPropertyResourceBundleс помощьюInputStream. - Если
formatне равно ни"java.class", ни"java.properties", выбрасываетсяIllegalArgumentException. - Если язык
localeвходит в число устаревших кодов языков, старых или новых, при необходимости повторите процесс загрузки с именем пакета, использующим другой код языка. Например, "iw" для "he" и наоборот.
- Имя пакета получается вызовом метода
- Параметры:
-
baseName— базовое имя пакета ресурсов, полное имя класса -
locale— локаль, для которой требуется создать экземпляр пакета ресурсов -
format— формат загружаемого пакета ресурсов -
loader—ClassLoader, используемый для загрузки пакета -
reload— флаг, указывающий на повторную загрузку пакета;true, если выполняется повторная загрузка пакета ресурсов с истёкшим сроком действия, иfalseв противном случае - Возвращает:
- экземпляр пакета ресурсов или
null, если пакет не найден. - Выбрасывает:
-
NullPointerException— еслиbundleName,locale,formatилиloaderимеет значениеnullлибо если методtoBundleNameвозвращаетnull -
IllegalArgumentException— еслиformatнеизвестен или если ресурс, найденный для заданных параметров, содержит некорректные данные. -
ClassCastException— если загруженный класс нельзя привести к типуResourceBundle -
IllegalAccessException— если класс или его конструктор без параметров недоступен. -
InstantiationException— если создание экземпляра класса завершается неудачей по другой причине. -
ExceptionInInitializerError— если инициализация, вызванная этим методом, завершается неудачей. -
IOException— если при чтении ресурсов с использованием операций ввода-вывода произошла ошибка - См. также:
getTimeToLive
public long getTimeToLive(String baseName, Locale locale)
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
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 - См. также:
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, 2025, 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.