Н.А. Вязовик - Программирование на Java

Здесь есть возможность читать онлайн «Н.А. Вязовик - Программирование на Java» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование на Java: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование на Java»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Программирование на Java — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование на Java», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

baseclass + " " + language1 + " " + country1 + " " + variant1

baseclass + " " + language1 + " " + country1 + " " + variant1 +

".properties"

baseclass + " " + language1 + " " + country1

baseclass + " " + language1 + " " + country1 + ".properties"

baseclass + " " + language1

baseclass + " " + language1 + ".properties"

baseclass + " " + language2 + " " + country2 + " " + variant2

baseclass + " " + language2 + " " + country2 + " " + variant2 +

".properties"

baseclass + " " + language2 + " " + country2

baseclass + " " + language2 + " " + country2 + ".properties"

baseclass + " " + language2 baseclass + " " + language2 + ".properties"

baseclass baseclass + ".properties"

Пример 14.28.

Например, если необходимо найти ResourceBundle для локали fr_CH (Швейцарский французский), а локаль по умолчанию en_US, при этом название базового класса ResourceBundle MyResources, то порядок поиска подходящего ResourceBundle будет таков.

MyResources_fr_CH

MyResources_fr

MyResources_en_US

MyResources_en

MyResources

Результатом работы getBundle будет загрузка необходимого класса ресурсов в память, однако данные этого класса могут быть сохранены на диске. Таким образом, если нужный класс не будет найден, то к требуемому имени класса будет добавлено расширение ".properties" и будет предпринята попытка найти файл с данными на диске.

Следует помнить, что необходимо указывать полностью квалифицированное имя класса ресурсов, т.е. имя пакета, имя класса. Кроме того, класс ресурсов должен быть доступен в контексте его вызова (там, где вызывается getResourceBundle ), то есть не быть private и т.д.

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

ResourceBundle хранит объекты в виде пар ключ/значение. Как уже отмечалось ранее, класс ResourceBundle абстрактный, поэтому при его наследовании необходимо переопределить методы:

Enumeration getKeys()

protected Object handleGetObject(String key)

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

Рассмотрим пример использования ResourceBundle:

public class MyResource extends ResourceBundle {

private Hashtable res = null;

public MyResource() {

res = new Hashtable();

res.put("TestKey","English Variant");

}

public Enumeration getKeys() {

return res.keys();

}

protected Object handleGetObject(String key) throws

java.util.MissingResourceException {

return res.get(key);

}

}

public class MyResource_ru_RU extends ResourceBundle {

private Hashtable res = null;

public MyResource_ru_RU() {

res = new Hashtable();

res.put("TestKey","Русский вариант");

}

public Enumeration getKeys() {

return res.keys();

}

protected Object handleGetObject(String key) throws

java.util.MissingResourceException {

return res.get(key);

}

}

public class Test {

public Test() {

}

public static void main(String[] args) {

Test test = new Test();

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

System.out.println(rb.getString("TestKey"));

rb = ResourceBundle.getBundle("experiment.MyResource", new Locale("ru","RU"));

System.out.println(rb.getString("TestKey"));

}

}

Пример 14.29.

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

English Variant Русский Вариант

Кроме того, следует обратить внимание, что ResourceBundle может хранить не только строковые значения. В нем можно хранить также двоичные данные, или просто методы, реализующие нужную функциональность, в зависимости от локали.

public interface Behavior {

public String getBehavior();

public String getCapital();

}

public class EnglishBehavior implements Behavior {

public EnglishBehavior() {

}

public String getBehavior() {

return "English behavior";

}

public String getCapital() {

return "London";

}

}

public class RussianBehavior implements Behavior {

public RussianBehavior() {

}

public String getBehavior() {

return "Русский вариант поведения";

}

public String getCapital() {

return "Москва";

}

}

public class MyResourceBundle_ru_RU extends ResourceBundle {

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");

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование на Java»

Представляем Вашему вниманию похожие книги на «Программирование на Java» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Алистер Маклин - South by Java Head
Алистер Маклин
Отзывы о книге «Программирование на Java»

Обсуждение, отзывы о книге «Программирование на Java» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x