ResourceBundle Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта.
[Android.Runtime.Register("java/util/ResourceBundle", DoNotGenerateAcw=true)]
public abstract class ResourceBundle : Java.Lang.Object
[<Android.Runtime.Register("java/util/ResourceBundle", DoNotGenerateAcw=true)>]
type ResourceBundle = class
inherit Object
- Наследование
- Производный
- Атрибуты
Комментарии
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. Например, если программе требуется ресурс, зависящий от языкового String
стандарта, программа может загрузить его из пакета ресурсов, соответствующего языковому стандарту текущего пользователя. Таким образом, можно написать программный код, который в значительной степени не зависит от языкового стандарта пользователя, изолируя большую часть, если не все, от сведений о конкретном языковом стандарте в пакетах ресурсов.
Это позволяет создавать программы, которые могут: <UL><LI> быть легко локализованы или переведены на разные языки <, LI> обрабатывает несколько языковых стандартов одновременно <, LI> можно легко изменить позже для поддержки еще большего количества языковых стандартов </UL.>
Пакеты ресурсов относятся к семействам, члены которых имеют общее базовое имя, но имена которых также содержат дополнительные компоненты, определяющие их языковые стандарты. Например, базовое имя семейства пакетов ресурсов может быть MyResources. Семейство должно иметь пакет ресурсов по умолчанию, имя которого совпадает с именем семейства MyResources, и будет использоваться в качестве пакета последней меры, если определенный языковой стандарт не поддерживается. Затем семья может предоставить столько членов, сколько нужно для конкретного языкового стандарта, например немецкий с именем "MyResources_de".
Каждый пакет ресурсов в семействе содержит одни и те же элементы, но они были переведены для языкового стандарта, представленного этим пакетом ресурсов. Например, и MyResources, и MyResources_de могут использовать String
для кнопки для отмены операций. В "MyResources" String
может содержать "Отмена", а в "MyResources_de" может содержать "Abbrechen".
Если существуют разные ресурсы для разных стран, можно создать специализации: например, "MyResources_de_CH" содержит объекты для немецкого языка (de) в Швейцарии (CH). Если вы хотите изменить только некоторые ресурсы в специализации, это можно сделать.
Когда программе требуется объект, зависящий от языкового стандарта, она загружает ResourceBundle
класс с помощью #getBundle(java.lang.String, java.util.Locale) getBundle
метода blockquote. <>
ResourceBundle myResources =
ResourceBundle.getBundle("MyResources", currentLocale);
</blockquote>
Пакеты ресурсов содержат пары "ключ-значение". Ключи уникальным образом идентифицируют объект, зависящий от языкового стандарта, в пакете. Ниже приведен пример ListResourceBundle
объекта , который содержит две пары "ключ-значение": <blockquote>
public class MyResources extends ListResourceBundle {
protected Object[][] getContents() {
return new Object[][] {
// LOCALIZE THE SECOND STRING OF EACH ARRAY (e.g., "OK")
{"OkKey", "OK"},
{"CancelKey", "Cancel"},
// END OF MATERIAL TO LOCALIZE
};
}
}
<Ключи /blockquote> всегда String
имеют значение s. В этом примере используются клавиши "OkKey" и "CancelKey". В приведенном выше примере значениями также String
являются s--"OK" и "Cancel", но они не обязательно должны быть. Значениями может быть любой тип объекта.
Объект извлекается из пакета ресурсов с помощью соответствующего метода получения. Так как "OkKey" и "CancelKey" являются строками, для их извлечения следует использовать getString
blockquote. <>
button1 = new Button(myResources.getString("OkKey"));
button2 = new Button(myResources.getString("CancelKey"));
</blockquote> . Все методы получения требуют ключа в качестве аргумента и возвращают объект , если он найден. Если объект не найден, метод getter создает исключение MissingResourceException
.
getString
Кроме того , ResourceBundle
также предоставляет метод для получения строковых массивов , getStringArray
а также универсальный getObject
метод для любого другого типа объекта. При использовании getObject
необходимо привести результат к соответствующему типу. Например: <blockquote>
int[] myIntegers = (int[]) myResources.getObject("intList");
</blockquote>
Платформа Java предоставляет два подкласса ResourceBundle
, ListResourceBundle
и PropertyResourceBundle
, которые предоставляют довольно простой способ создания ресурсов. Как вы кратко видели в предыдущем примере, ListResourceBundle
управляет своим ресурсом в виде списка пар "ключ-значение". PropertyResourceBundle
использует файл свойств для управления своими ресурсами.
Если ListResourceBundle
или PropertyResourceBundle
не соответствуют вашим потребностям, вы можете написать собственный ResourceBundle
подкласс. Подклассы должны переопределять два метода: handleGetObject
и getKeys()
.
Реализация подкласса ResourceBundle
должна быть потокобезопасной, если он одновременно используется несколькими потоками. Реализации неастрактных методов по умолчанию в этом классе, а также методов в прямых известных конкретных подклассах ListResourceBundle
и PropertyResourceBundle
являются потокобезопасными.
<h3>ResourceBundle.Control</h3>
Класс ResourceBundle.Control
предоставляет сведения, необходимые для выполнения процесса getBundle
загрузки пакета фабричные методы, которые принимают ResourceBundle.Control
экземпляр . Вы можете реализовать собственный подкласс, чтобы включить нестандартные форматы пакетов ресурсов, изменить стратегию поиска или определить параметры кэширования. Дополнительные сведения см. в описаниях класса и #getBundle(String, Locale, ClassLoader, Control) getBundle
метода фабрики.
<h3>Cache Management</h3>
Экземпляры пакета ресурсов, созданные getBundle
фабричные методы, кэшируются по умолчанию, а заводские методы возвращают один и тот же экземпляр пакета ресурсов несколько раз, если он был кэширован. getBundle
клиенты могут очистить кэш, управлять временем существования кэшированных экземпляров пакета ресурсов с помощью значений времени жизни или не кэшировать экземпляры пакета ресурсов. Дополнительные сведения см. в описании метода getBundle</фабрики кода>> #getBundle(String, Control#needsReload(String, Locale, String, ClassLoader, ResourceBundle, long) ResourceBundle.Control.needsReload
Control#getTimeToLive(String, Locale) ResourceBundle.Control.getTimeToLive
#clearCache(ClassLoader) clearCache
Locale, ClassLoader, Control). <
<h3>Example</h3>
Ниже приведен очень простой пример подкласса ResourceBundle
, который управляет двумя ресурсами (для большего количества ресурсов, вероятно, MyResources
будет использоваться Map
). Обратите внимание, что вам не нужно указывать значение, если "родительский уровень" ResourceBundle
обрабатывает тот же ключ с тем же значением (как для okKey ниже). <blockquote>
// default (English language, United States)
public class MyResources extends ResourceBundle {
public Object handleGetObject(String key) {
if (key.equals("okKey")) return "Ok";
if (key.equals("cancelKey")) return "Cancel";
return null;
}
public Enumeration<String> getKeys() {
return Collections.enumeration(keySet());
}
// Overrides handleKeySet() so that the getKeys() implementation
// can rely on the keySet() value.
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("okKey", "cancelKey"));
}
}
// German language
public class MyResources_de extends MyResources {
public Object handleGetObject(String key) {
// don't need okKey, since parent level handles it.
if (key.equals("cancelKey")) return "Abbrechen";
return null;
}
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("cancelKey"));
}
}
</blockquote> Вам не нужно ограничиваться использованием одного семейства ResourceBundle
. Например, у вас может быть набор пакетов для сообщений ExceptionResources
об исключениях (ExceptionResources_fr
, ExceptionResources_de
, ...) и один для мини-приложений WidgetResource
(WidgetResources_fr
, WidgetResources_de
, ...); разбиение ресурсов по мере необходимости.
Добавлено в версии 1.1.
Документация по Java для java.util.ResourceBundle
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
Конструкторы
ResourceBundle() |
Единственный конструктор. |
ResourceBundle(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
Свойства
BaseBundleName |
Возвращает базовое имя этого пакета, если оно известно или |
Class |
Возвращает класс среды выполнения данного объекта |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
JniIdentityHashCode |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
JniPeerMembers |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. |
Keys |
Возвращает имена ресурсов, содержащихся в этом |
Locale |
Возвращает языковой стандарт этого пакета ресурсов. |
Parent |
Родительский пакет этого пакета. |
PeerReference |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Методы
ClearCache() |
Удаляет из кэша все пакеты ресурсов, загруженные с помощью загрузчика класса вызывающего объекта. |
ClearCache(ClassLoader) |
Удаляет из кэша все пакеты ресурсов, загруженные заданным загрузчиком класса. |
Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
ContainsKey(String) |
Определяет, содержится ли данный |
Dispose() |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
Dispose(Boolean) |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
Equals(Object) |
Указывает, равен ли какой-то другой объект этому объекту. (Унаследовано от Object) |
GetBundle(String) |
Возвращает пакет ресурсов, используя указанное базовое имя, языковой стандарт по умолчанию и загрузчик класса вызывающего объекта. |
GetBundle(String, Locale) |
Возвращает пакет ресурсов, используя указанное базовое имя и языковой стандарт, а также загрузчик класса вызывающего объекта. |
GetBundle(String, Locale, ClassLoader) |
Возвращает пакет ресурсов, используя указанное базовое имя, языковой стандарт и загрузчик классов. |
GetBundle(String, Locale, ClassLoader, ResourceBundle+Control) |
Возвращает пакет ресурсов, используя указанное базовое имя, языковой стандарт по умолчанию и загрузчик класса вызывающего объекта. |
GetBundle(String, Locale, ResourceBundle+Control) |
Возвращает пакет ресурсов, используя указанное базовое имя, языковой стандарт по умолчанию и загрузчик класса вызывающего объекта. |
GetBundle(String, ResourceBundle+Control) |
Возвращает пакет ресурсов, используя указанное базовое имя, языковой стандарт по умолчанию и загрузчик класса вызывающего объекта. |
GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
GetObject(String) |
Возвращает объект для заданного ключа из этого пакета ресурсов или одного из его родительских элементов. |
GetString(String) |
Возвращает строку для заданного ключа из этого пакета ресурсов или одного из его родительских элементов. |
GetStringArray(String) |
Возвращает массив строк для заданного ключа из этого пакета ресурсов или одного из его родительских элементов. |
HandleGetObject(String) |
Возвращает объект для заданного ключа из этого пакета ресурсов. |
HandleKeySet() |
Возвращает из ключей |
JavaFinalize() |
Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект . (Унаследовано от Object) |
KeySet() |
Возвращает из всех ключей |
Notify() |
Пробуждает один поток, ожидающий монитора этого объекта. (Унаследовано от Object) |
NotifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. (Унаследовано от Object) |
SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
SetParent(ResourceBundle) |
Задает родительский пакет этого пакета. |
ToArray<T>() |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
UnregisterFromRuntime() |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
Wait() |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, из-за <уведомления><<> или>прерывания или прерывания.>< (Унаследовано от Object) |
Wait(Int64) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от Object) |
Wait(Int64, Int32) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
IJavaPeerable.Disposed() |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
IJavaPeerable.Finalized() |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
IJavaPeerable.JniManagedPeerState |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. (Унаследовано от Object) |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверенного средой выполнения Android. |
JavaCast<TResult>(IJavaObject) |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. |
GetJniTypeName(IJavaPeerable) |
Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. |