Класс 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 могут вернуть нежелательные ресурсы. Например, если метод getFormats при первом вызове ResourceBundle.getBundle вернет только "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 |
Возвращает локаль-заглушку для дальнейшего поиска ресурсов методом фабрики 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. |
Подробное описание полей
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- базовое имя ресурсного набора, полное имя класса - Возвращает:
ListString, содержащий форматы для загрузки ресурсных наборов.- Исключения:
-
NullPointerException- еслиbaseNameравно null - См. также:
getCandidateLocales
public List<Locale> getCandidateLocales(String baseName, Locale locale)
baseName и locale. Этот метод вызывается фабричным методом ResourceBundle.getBundle каждый раз, когда фабричный метод пытается найти пакет ресурсов для целевой Locale. Последовательность кандидатов также соответствует пути поиска ресурсов во время выполнения (также известному как цепь предков), если соответствующие пакеты ресурсов для кандидатов существуют и их предки не определены загруженными пакетами ресурсов сами по себе. Последний элемент списка должен быть корневой локалью, если необходимо, чтобы базовый пакет был конечным звеном цепи предков.
Если заданная локаль равна Locale.ROOT (корневая локаль), должен быть возвращён список, содержащий только корневую Locale. В этом случае фабричный метод ResourceBundle.getBundle загружает только базовый пакет в качестве результирующего пакета ресурсов.
Не требуется возвращать неизменяемый (unmodifiable) список. Однако возвращённый список не должен изменяться после возвращения его методом getCandidateLocales.
Реализация по умолчанию возвращает список, содержащий кандидатов по правилам, описанным ниже. В описании ниже, L, S, C и V соответственно представляют непустое значение языка, сценария, страны и варианта. Например, [L, C] представляет локаль, которая имеет значения только для языка и страны. Форма L("xx") означает, что значение языка (непустое) равно "xx". Во всех случаях локали, у которых значения конечного компонента являются пустыми строками, пропускаются.
- Для входной локали с пустым значением сценария добавляются кандидатские локали, опуская конечный компонент поочерёдно, как показано ниже:
- [L, C, V]
- [L, C]
- [L]
-
Locale.ROOT
- Для входной локали с непустым значением сценария добавляются кандидатские локали, опуская конечный компонент до языка, затем добавляются кандидаты, сгенерированные из локали с восстановленными страной и вариантом:
- [L, S, C, V]
- [L, S, C]
- [L, S]
- [L, C, V]
- [L, C]
- [L]
-
Locale.ROOT
- Для входной локали с значением варианта, состоящим из нескольких подтегов, разделённых символом нижнего подчеркивания, генерируются кандидатские локали, опуская подтеги варианта по одному, затем вставляются после каждого вхождения подтегов варианта с полным значением варианта в оригинальном списке. Например, если вариант состоит из двух подтегов 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
- Специальные случаи для китайского языка. Когда у входной локали язык "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")(обработанного выше), когда у входной локали язык "no" или "nb", кандидатские локали с кодами языка "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"), то возвращается список кандидатов Locale:
Locale("ja", "", "XX")
Locale("ja")
Locale.ROOT
. И если пакеты ресурсов для "ja" и "" Locale найдены, то путь поиска ресурсов во время выполнения (цепь предков) —
Messages_ja -> Messages
- Parameters:
-
baseName— основное имя пакета ресурсов, полное имя класса -
locale— локаль, для которой требуется пакет ресурсов - Returns:
- список кандидатских локалей для заданной
locale - Throws:
-
NullPointerException— еслиbaseNameилиlocalenull
getFallbackLocale
public Locale getFallbackLocale(String baseName, Locale locale)
ResourceBundle.getBundle. Этот метод вызывается из фабричного метода каждый раз, когда ни один пакет ресурсов не был найден для baseName и locale, где локаль является либо параметром для ResourceBundle.getBundle, либо предыдущей резервной локалью, возвращённой этим методом. Метод возвращает null, если дальнейший поиск по резервным локали не нужен.
Реализация по умолчанию возвращает стандартную локаль, если заданная локаль не является стандартной. В противном случае возвращается null.
- Parameters:
-
baseName— основное имя пакета ресурсов, полное имя класса, для которогоResourceBundle.getBundleне смог найти ни одного пакета ресурсов (кроме базового) -
locale— локаль, для которойResourceBundle.getBundleне смог найти ни одного пакета ресурсов (кроме базового) - Returns:
- локаль для резервного поиска, или
null, если дальнейший резервный поиск не требуется. - Throws:
-
NullPointerException— еслиbaseNameилиlocalenull
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. Затем сInputStreamконструируетсяPropertyResourceBundle. - Если
formatни"java.class", ни"java.properties", выбрасывается исключениеIllegalArgumentException. - Если язык
localeявляется одним из старых или новых кодов языка, то, при необходимости, процесс загрузки повторяется с именем пакета с другим языком. Например, "iw" для "he" и наоборот.
- Имя пакета получается путём вызова
- Параметры:
-
baseName- базовое имя ресурсного пакета, полное имя класса -
locale- регион, для которого должен быть инициализирован ресурсный пакет -
format- формат ресурсного пакета для загрузки -
loader- используемыйClassLoaderдля загрузки пакета -
reload- флаг, указывающий на перезагрузку пакета;true, если требуется перезагрузка истекшего ресурсного пакета;falseв противном случае - Возвращает:
- экземпляр ресурсного пакета или
null, если такой не найден. - Исключения:
-
NullPointerException- еслиbundleName,locale,formatилиloaderимеют значениеnullили еслиnullвозвращено методомtoBundleName -
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".
Переопределение этого метода позволяет приложениям использовать различные соглашения по организации и упаковке локализованных ресурсов.
- Parameters:
-
baseName- основное имя пакета ресурсов, полное имя класса -
locale- локализация, для которой должен загружаться пакет ресурсов - Returns:
- имя пакета ресурсов
- Throws:
-
NullPointerException- еслиbaseNameилиlocaleравныnull - See Also:
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".- Parameters:
-
bundleName- имя пакета ресурсов -
suffix- суффикс типа файла - Returns:
- преобразованное имя ресурса
- Throws:
-
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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/ResourceBundle.Control.html