Hashtable bundle = null; public MyResourceBundle_ru_RU() { bundle = new Hashtable(); bundle.put('Bundle description','Набор ресурсов для русской локали'); bundle.put('Behavior',new RussianBehavior()); } public Enumeration getKeys() { return bundle.keys(); } protected Object handleGetObject(String key) throws java.util.MissingResourceException { return bundle.get(key); } } public class MyResourceBundle_en_EN extends ResourceBundle { Hashtable bundle = null; public MyResourceBundle_en_EN() { bundle = new Hashtable(); bundle.put('Bundle description','English resource set'); bundle.put('Behavior',new EnglishBehavior()); } public Enumeration getKeys() { return bundle.keys(); } protected Object handleGetObject(String key) throws java.util.MissingResourceException { return bundle.get(key); } } public class MyResourceBundle extends ResourceBundle { Hashtable bundle = null; public MyResourceBundle() { bundle = new Hashtable(); bundle.put('Bundle description','Default resource bundle'); bundle.put('Behavior',new EnglishBehavior()); } public Enumeration getKeys() { return bundle.keys(); } protected Object handleGetObject(String key) throws java.util.MissingResourceException { return bundle.get(key); } } public class Using { public Using() { } public static void main(String[] args) { Using u = new Using(); ResourceBundle rb = ResourceBundle.getBundle('lecture.MyResourceBundle', Locale.getDefault()); System.out.println((String)rb.getObject('Bundle description')); Behavior be = (Behavior)rb.getObject('Behavior'); System.out.println(be.getBehavior()); System.out.println(be.getCapital()); rb = ResourceBundle.getBundle('lecture.MyResourceBundle', new Locale('en','EN')); System.out.println((String)rb.getObject('Bundle description')); Behavior be = (Behavior)rb.getObject('Behavior'); System.out.println(be.getBehavior()); System.out.println(be.getCapital()); } Пример 14.30.

Результатом будет:

Русский набор ресурсов Русский вариант поведения Москва English resource bundle English behavior London Пример 14.31.

Классы ListResourceBundle и PropertiesResourceBundle

У класса ResourceBundle определено два прямых потомка ListResourceBundle и PropertiesResourceBundle. PropertiesResourceBundle хранит набор ресурсов в файле, который представляет собой набор строк.

Алгоритм конструирования объекта, содержащего набор ресурсов, был описан в предыдущем параграфе. Во всех случаях, когда в качестве последнего элемента используется .properties, например, baseclass + '' + language1 + '' + country1 + '.properties', речь идет о создании ResourceBundle из файла с наименованием baseclass + '' + language1 + '' + country1 и расширением properties. Обычно класс ResourceBundle помещают в пакет resources, а файл свойств - в каталог resources. Тогда для того, чтобы инстанциировать нужный класс, необходимо указать полный путь к этому классу (файлу):

getBundle('resources.MyResource', Locale.getDefault());

ListResourceBundle хранит набор ресурсов в виде коллекции и является абстрактным классом. Классы, которые наследуют ListResourceBundle, должны обеспечить:

переопределение метода Object[][] getContents(), который возвращает массив ресурсов;

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату