@выдает пакет ресурсов для возвращения

*/

public static ResourceBundle getBundle(String baseName, String locale)

throws IllegalArgumentException, MissingResourceException

{

Class c; if (baseName == null)

{

throw new IllegalArgumentException("No basename.");

{

String className = baseName + «_» + locale;

ResourceBundle bundle = null;

try

{

с = Class.forName(className);

bundle = (ResourceBundle) с. newlnstance();

}

catch (ClassNotFoundException cnfe)

throw new

MissingResourceException("Class not found.");

}

catch (InstantiationException ie)

{

throw new

MissingResourceException("Can11 instantiate.");

}

catch (IllegalAccessException iae)

{

throw new

MissingResourceException("Can1t access.");

}

return bundle;

}

/**

Извлекает объект с указанным ключом. Если ключ не найден, ищется родительский пакет.

@param key Ключ объекта

@выдает объект с указанным ключом

*/

public final Object getObject(String key)

throws MissingResourceException

}

Object obj; if (key == null)

{

throw new NullPointerException();

}

obj = handleGetObject(key); if (obj == null SS parent 1= null)

{

obj = parent.getObject(key);

}

if (obj == null)

{

throw new MissingResourceException ();

return obj;

}

/**

Ищет данный пакет ресурсов для объекта с указанным ключом.

@param key Ключ поиска желаемого объекта.

@выдает объект с указанным ключом.

*/

protected abstract Object handleGetObject(String key);

}

Листинг 9.8. Класс. ListResourceBundle использует «список» (в действительности двухмерный массив объектов) для агрегирования ресурсов

/**

Этот класс определяет пакет ресурсов как подходящий массив ресурсов.

Он воспроизводит класс того же имени, определяемый платформой J2SE, java.util.ListResourceBundle.

Данный класс абстрактен. Приложения вынуждены создавать его подклассы и определять конкретные классы, которые содержат локализованные ресурсы.

0пределенные подклассы конкретного приложения должны быть названы так, чтобы имя содержало язык и страну региональной настройки, в соответствии со стандартами ISO 639 и ISO 3166 для языковых и страновых кодов соответственно.

*/

открытый абстрактный класс ListResourceBundle дополняет ResourceBundle

/**

Конструктор No-arg.

*/

public ListResourceBundle()

super();

// Массив ресурсов в формате ключ-значение, private static final Object [][] contents = null;

/**

Получает массив ресурсов.

@возвращает двухмерный массив пар ключ-значение, который определяет эту группу.

*/

public abstract Object [][] getContents();

/**

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

@param key Ключ пары ключ-значение.

@выдает объект, который представляет значение пары ключ-значение.

*/

public final Object handleGetObject(String key)

{

Object value = null; if. (key == null)

{

return null;

}

Object [][] pairs = getContents ();

for (int i = 0; i < pairs. length; i + +) if (key.equals(pairs [i] [0]))

value = (pairs [i] [1]);

}

}

return value;

}

}

Перейти на страницу:

Похожие книги