Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Всегда должен создаваться базовый класс без суффиксов, т.е. если вы создаете ресурсы с именем 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. putfTestKey", "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; pub/ic 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"));
}
}
Результатом будет:
English Variant Русский Вариант
Кроме того, следует обратить внимание, что ResourceBundle может хранить не только строковые значения. В нем можно хранить также двоичные данные, или просто методы, реализующие нужную функциональность, в зависимости от локали.
public interface Behavior { public String getBehavior(); public String getCapital(); }
public class EnglishBehavior implements Behavior{ public EnglishBehavior() { }