|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел иллюстрирует использование a ListResourceBundle объект с вызванным примером программы . Текст, который следует, объясняет каждый шаг, включенный в создание ListDemoListDemo программа, наряду с 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