Utilizar un ListResourceBundle
Esta sección ilustra el uso de un objeto
ListResourceBundle con un programa de ejemplo llamado
ListDemo. Explicaremos cada paso involucrado en la creacción del programa
ListDemo, junto con las subclases de
ListResourceBundle que soporta. El código fuente del programa está en
ListDemo.java. También podrías querer examinar la
salida producida por el programa.
1. Crear las Subclases de ListResourceBundle
Un
ListResourceBundle está constituido por un fichero de clase. Por lo tanto, nuestro primer paso es crear el fichero de clase para cada Localidad soportada. En el programa
ListDemo, el nombre base del
ListResourceBundle es
StatsBundle. Cómo
ListDemo soporta tres localidades diferentes, requiere los siguientes ficheros de clases:
StatsBundle_en_CA.class
StatsBundle_fr_FR.class
StatsBundle_ja_JA.class
La clase StatsBundle para Japón está definida en el código fuente de la siguiente forma. Observa que el nombre de la clase está construido añadiendo el código de idioma y del país al nombre base del
ListResourceBundle. Dentro de la clase, se incializa un array de dos dimensiones
contents con parejas de clave valor. Las claves son el primer elemento de cada pareja: GDP, Population, y Literacy. Las claves deben ser objetos
String, y deben ser iguales en cada fichero class del conjunto
StatsBundle. Los valores pueden ser cualquier tipo de objeto. En este ejemplo, los valores son dos objetos
Integer y un objeto
Float.
import java.util.*;
public class StatsBundle_ja_JA extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
private Object[][] contents = {
{"GDP", new Integer(21300)},
{"Population", new Integer(125449703)},
{"Literacy", new Double(0.99)},
};
}
2. Especificar la Localidad
En el programa
ListDemo, hemos definido los siguientes objetos
Locale:
Locale[] supportedLocales = {
new Locale("en","CA"),
new Locale("ja","JA"),
new Locale("fr","FR")
};
Cada objeto
Locale corresponde a una clase de
StatsBundle. Por ejemplo, la localidad Japonesa, que fue definida con los códigos
ja y
JA, corresponde con
StatsBundle_ja_JA.class.
3. Crear el ResourceBundle
Para crear el
ListResourceBundle, llamamos al método
getBundle. En la siguiente línea de códido, observa que hemos específicado el nombre base de la clase (
StatsBundle) y la Localidad.
ResourceBundle stats =
ResourceBundle.getBundle("StatsBundle",currentLocale);
El método
getBundle buscará una clase cuyo nombre empiece con
StatsBundle y esté seguido por los códigos de idioma y de páis específicados por la
Locale. Por ejemplo, si
currentLocale se crea con los códigos
ja y
JA,
getBundle devuelve un objeto
ListResourceBundle cargado con la clase
StatsBundle_ja_JA.
4. Recuperar Objetos Localizados
Ahora que tenemos un
ListResourceBundle para la Localidad apropiada, recuperaremos los objetos localizados por sus claves. En la siguiente línea de código, recuperarmos el ratio de alfabetización llamando al método
getObject con el parámetro "Literacy". Como
getObject devuelve un objeto, debemos tiparlo a
Double:
Double lit = (Double)stats.getObject("Literacy");
Ozito