Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел иллюстрирует использование a ListResourceBundle
объект с вызванным примером программы
. Текст, который следует, объясняет каждый шаг, включенный в создание ListDemo
ListDemo
программа, наряду с ListResourceBundle
подклассы, которые поддерживают это.
A ListResourceBundle
поддерживается файлом class. Поэтому первый шаг должен создать файл class для каждого поддерживаемого Locale
. В ListDemo
программируйте базовое имя ListResourceBundle
StatsBundle
. С тех пор ListDemo
поддерживает три Locale
объекты, требуются следующие три файла class:
StatsBundle_en_CA.class StatsBundle_fr_FR.class StatsBundle_ja_JP.class
StatsBundle
class для Японии определяется в исходном коде, который следует. Отметьте, что имя class создается, добавляя язык и коды страны к базовому имени ListResourceBundle
. В class двумерное contents
массив инициализируется с парами ключ/значение. Ключи являются первым элементом в каждой паре: GDP
, Population
, и Literacy
. Ключи должны быть String
объекты и они должны быть тем же самым в каждом class в StatsBundle
набор. Значения могут быть любым типом объекта. В этом примере значения два Integer
объекты и a Double
объект.
import java.util.*; public class StatsBundle_ja_JP extends ListResourceBundle { public Object[][] getContents() { return contents; } private Object[][] contents = { { "GDP", new Integer(21300) }, { "Population", new Integer(125449703) }, { "Literacy", new Double(0.99) }, }; }
ListDemo
программа определяет Locale
объекты следующим образом:
Locale[] supportedLocales = { new Locale("en", "CA"), new Locale("ja", "JP"), new Locale("fr", "FR") };
Каждый Locale
объект соответствует одному из StatsBundle
классы. Например, японцы Locale
, который был определен с помощью ja
и JP
коды, соответствия StatsBundle_ja_JP.class
.
Создать ListResourceBundle
, вызовите getBundle
метод. Следующая строка кода определяет базовое имя class (StatsBundle
) и Locale
:
ResourceBundle stats = ResourceBundle.getBundle("StatsBundle", currentLocale);
getBundle
метод ищет class, имя которого начинается StatsBundle
и сопровождается языком и кодами страны указанного Locale
. Если currentLocale
создается с ja
и JP
коды, getBundle
возвраты a ListResourceBundle
соответствие class StatsBundle_ja_JP
, например.
Теперь, когда у программы есть a ListResourceBundle
для соответствующего Locale
, это может выбрать локализованные объекты их ключами. Следующая строка кода получает уровень грамотности, вызывая getObject
с Literacy
основной параметр. С тех пор getObject
возвращает объект, бросьте его к a Double
:
Double lit = (Double)stats.getObject("Literacy");
ListDemo
программа печатает данные, которые она выбирала с getBundle
метод:
Locale = en_CA GDP = 24400 Population = 28802671 Literacy = 0.97 Locale = ja_JP GDP = 21300 Population = 125449703 Literacy = 0.99 Locale = fr_FR GDP = 20200 Population = 58317450 Literacy = 0.99