Класс ResourceBundle.Control
- Enclosing class:
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 возвращает только "java.class" при первом вызове 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", 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 Note:
-
ResourceBundle.Controlне поддерживается в именованных модулях. Если методResourceBundle.getBundleсResourceBundle.Controlвызывается в именованном модуле, метод выбросит исключениеUnsupportedOperationException. Любые поставщики сервисовResourceBundleControlProviderигнорируются в именованных модулях. - Since:
- 1.6
- See Also:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
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 для использования в качестве локальной fallback для дальнейшего поиска ресурсов методом 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 в неизменяемом (unmodifiable) виде не предъявляется. Однако, возвращаемый List не должен изменяться после возвращения методом getFormats.
По умолчанию реализация возвращает FORMAT_DEFAULT, чтобы фабричный метод ResourceBundle.getBundle сначала искал ресурсные пакеты на основе классов, а затем на основе свойств.
- Параметры:
-
baseName- имя базового ресурсного пакета, полное имя класса - Возвращает:
ListStringсодержащий форматы загрузки ресурсных пакетов.- Издаёт:
-
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
возвращается. И если ресурсные пакеты для "ja" и "" Locale найдены, то путь поиска ресурсов во время выполнения (цепь предков) будет:
Messages_ja -> Messages
- Parameters:
-
baseName- базовое имя ресурсного пакета, полное имя класса -
locale- локаль, для которой требуется ресурсный пакет - Returns:
- список кандидатов на
Localeдля даннойlocale - Throws:
-
NullPointerException- еслиbaseNameилиlocalenull
getFallbackLocale
public Locale getFallbackLocale(String baseName, Locale locale)
ResourceBundle.getBundle. Этот метод вызывается из фабричного метода каждый раз, когда не удается найти результирующий ресурсный пакет для baseName и locale, где локаль - либо параметр для ResourceBundle.getBundle, либо предыдущая резервная локаль, возвращенная этим методом. Метод возвращает null если дальнейший поиск по умолчанию не требуется.
Реализация по умолчанию возвращает стандартную Locale, если заданная locale не является стандартной. В противном случае возвращается null.
- Parameters:
-
baseName- базовое имя ресурсного пакета, полное имя класса, для которогоResourceBundle.getBundleне смог найти никаких ресурсных пакетов (кроме базового) -
locale-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используется для отключения кэшей базовых слоёв загрузки ресурсов и для получения потока данных. В противном случае вызываетсяloader.getResourceAsStreamдля полученияInputStream. Затем создаётся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, или еслиnullвозвращается методомtoBundleName -
IllegalArgumentException- еслиformatнеизвестно или если найденный ресурс для заданных параметров содержит некорректные данные. -
ClassCastException- если загруженный класс нельзя привести к типуResourceBundle -
IllegalAccessException- если класс или его конструктор без параметров недоступен. -
InstantiationException- если создание экземпляра класса не удалось по другим причинам. -
ExceptionInInitializerError- если инициализация, вызванная этим методом, не удалась. -
SecurityException- Если присутствует менеджер безопасности, и создание новых экземпляров запрещено. Подробности см. вClass.newInstance(). -
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 равен Locale("en"), то возвращается "baseName_en".
Переопределение этого метода позволяет приложениям использовать различные соглашения при организации и упаковке локализованных ресурсов.
- Parameters:
-
baseName- базовое имя набора ресурсов, полное имя класса -
locale- 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, 2023, 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/21/docs/api/java.base/java/util/ResourceBundle.Control.html