Чтение онлайн

на главную - закладки

Жанры

Программирование на Java

Вязовик Н.А.

Шрифт:

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, который возвращает массив ресурсов;

собственно двумерный массив, содержащий ресурсы.

Рассмотрим пример:

public class MyResource extends ListResourceBundle {

Vector v = new Vector;

Object[][] resources = {

{

"StringKey","String"

}

, {

"DoubleKey",new Double(0.0)

}

, {

"VectorKey",v

}

,

};

public MyResource {

super;

v.add("Element 1");

v.add("Element 2");

v.add("Element 3");

}

protected Object[][] getContents {

return resources;

}

}

public class Test {

public Test {

}

public static void main(String[] args) {

Test test = new Test;

ResourceBundle rb = ResourceBundle.getBundle("experiment.MyResource",Locale.getDefault);

Vector v = (Vector)rb.getObject("VectorKey");

Iterator it = v.iterator;

while(it.hasNext) {

System.out.println(it.next);

}

}

}

Пример 14.32.

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

Element 1

Element 2

Element 3

Создание ресурсов для локалей, отличных от локали по умолчанию, осуществляется так же, как было показано для ResourceBundle.

Заключение

В этой лекции были рассмотрены вспомогательные классы пакета java.util. Как можно было заметить, они относятся к самым разным задачам, а потому редкая программа обходится без использования хотя бы одного класса этого пакета.

Напомним кратко все основные классы и их особенности:

Для работы с датой и временем должны использоваться классы Date, Calendar. Класс Calendar абстрактный, существует конкретная реализация этого класса GregorianCalendar.

Интерфейс Observer и класс Observable реализуют парадигму MVC и предназначены для уведомления одного объекта об изменении состояния другого.

Коллекции ( Collections ) не накладывают ограничений на порядок следования и дублирование элементов.

Списки ( List ) поддерживают порядок элементов (управляются либо самими данными, либо внешними алгоритмами).

Наборы ( Set ) не допускают дублированных элементов.

Карты ( Maps ) используют уникальные ключи для поиска содержимого.

Применение массивов делает добавление, удаление и увеличение количества элементов затруднительным.

Использование связанных списков ( LinkedList ) обеспечивает хорошую производительность при вставке, удалении элементов, но снижает скорость индексированного доступа к ним.

Использование деревьев ( Tree ) облегчает вставку, удаление и увеличение размера хранилища, снижает скорость индексированного доступа, но увеличивает скорость поиска.

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

Поделиться:
Популярные книги

На границе империй. Том 9. Часть 5

INDIGO
18. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 5

Двойник Короля 5

Скабер Артемий
5. Двойник Короля
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Двойник Короля 5

Неудержимый. Книга XXXVII

Боярский Андрей
37. Неудержимый
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Неудержимый. Книга XXXVII

Седина в бороду, Босс… вразнос!

Трофимова Любовь
Юмор:
юмористическая проза
5.00
рейтинг книги
Седина в бороду, Босс… вразнос!

Ермак. Регент

Валериев Игорь
10. Ермак
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Ермак. Регент

На границе империй. Том 5

INDIGO
5. Фортуна дама переменчивая
Фантастика:
боевая фантастика
попаданцы
7.50
рейтинг книги
На границе империй. Том 5

Точка Бифуркации IV

Смит Дейлор
4. ТБ
Фантастика:
героическая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Точка Бифуркации IV

Ренегат космического флота

Борчанинов Геннадий
4. Звезды на погонах
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Ренегат космического флота

Печать Пожирателя

Соломенный Илья
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Печать Пожирателя

Страж Кодекса. Книга IV

Романов Илья Николаевич
4. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга IV

Шайтан Иван 5

Тен Эдуард
5. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
5.00
рейтинг книги
Шайтан Иван 5

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар

Вперед в прошлое 7

Ратманов Денис
7. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 7

Эволюционер из трущоб. Том 12

Панарин Антон
12. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эволюционер из трущоб. Том 12