|
|
Этот раздел иллюстрирует использование объектаListResourceBundleв простой программе, названнойListDemo. Последующий текст объясняет каждый шаг создания программыListDemoвместе с полдклассамиListResourceBundle, которые ее поддерживают.
ListResourceBundleподдерживается файлом класса. Следовательно, первый шаг - создание файла класса для каждой поддерживаемойLocale. В программеListDemoбазовое имяListResourceBundle-StatsBundle. Поскольку программаListDemoподдерживает три объектаLocale, она требует трех файлов классов:StatsBundle_en_CA.class StatsBundle_fr_FR.class StatsBundle_ja_JP.classКласс
StatsBundleдля Японии определен в следующем исходном коде. Заметьте, что имя класса конструируется добавлением кодов языка и страны к базовому имениListResourceBundle. Внутри класса двумерный массивcontentsинициализирован парами ключ-значение. Ключи являются первыми элементами каждой пары:GDP,PopulationиLiteracy. Ключи должны быть объектамиStringи они должны быть одними и теми же во всех классах набораStatsBundle. Значения могут быть объектами любых типов. В этом примере значениями являются два объектаIntegerи объект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.
Lkz cjplfybzListResourceBundleвызывается методgetBundle. Следующая строка кода задает базовое имя для класса (StatsBundle) иLocale:ResourceBundle stats = ResourceBundle.getBundle("StatsBundle", currentLocale);Метод
getBundleищет класс, имя которого начинается сStatsBundle, за которым следуют коды языка и страны заданнойLocale.currentLocaleсоздана с кодамиjaиJP,getBundleвозвращаетListResourceBundle, соответствующий классуStatsBundle_ja_JP, например.
Теперь, когда программа имеетListResourceBundleдля требуемойLocale, она может выбирать локализованные объекты по их ключам. Следующая строка кода получает уровень грамотности вызываяgetObjectс параметромLiteracy. ПосколькуgetObjectвозвращает объект, приводим его к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
|
|
Copyright 1995-2002 Sun Microsystems, Inc. All rights reserved.