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
Наследование
ResourceBundle
Производный
Атрибуты

Комментарии

Пакеты ресурсов содержат объекты, зависящие от языкового стандарта. Например, если программе требуется ресурс, зависящий от языкового 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.needsReloadControl#getTimeToLive(String, Locale) ResourceBundle.Control.getTimeToLive#clearCache(ClassLoader) clearCacheLocale, 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&lt;String&gt; getKeys() {
                    return Collections.enumeration(keySet());
                }

                // Overrides handleKeySet() so that the getKeys() implementation
                // can rely on the keySet() value.
                protected Set&lt;String&gt; handleKeySet() {
                    return new HashSet&lt;String&gt;(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&lt;String&gt; handleKeySet() {
                    return new HashSet&lt;String&gt;(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

Возвращает базовое имя этого пакета, если оно известно или null неизвестно.

Class

Возвращает класс среды выполнения данного объекта Object.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
JniIdentityHashCode

Пакеты ресурсов содержат объекты, зависящие от языкового стандарта.

(Унаследовано от Object)
JniPeerMembers

Пакеты ресурсов содержат объекты, зависящие от языкового стандарта.

Keys

Возвращает имена ресурсов, содержащихся в этом ResourceBundleобъекте .

Locale

Возвращает языковой стандарт этого пакета ресурсов.

Parent

Родительский пакет этого пакета.

PeerReference

Пакеты ресурсов содержат объекты, зависящие от языкового стандарта.

(Унаследовано от Object)
ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Методы

ClearCache()

Удаляет из кэша все пакеты ресурсов, загруженные с помощью загрузчика класса вызывающего объекта.

ClearCache(ClassLoader)

Удаляет из кэша все пакеты ресурсов, загруженные заданным загрузчиком класса.

Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
ContainsKey(String)

Определяет, содержится ли данный key объект в этом ResourceBundle или его родительском пакете.

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()

Возвращает из ключейSet, содержащихся <только< em>/em в этом ResourceBundleобъекте> .

JavaFinalize()

Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект .

(Унаследовано от Object)
KeySet()

Возвращает из всех ключей Set , содержащихся в этом ResourceBundle и его родительских пакетах.

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)

Пакеты ресурсов содержат объекты, зависящие от языкового стандарта.

Применяется к