java.util
Class ResourceBundle

java.lang.Object
  extended byjava.util.ResourceBundle

public abstract class ResourceBundle
extends java.lang.Object

Author:
josson smith 2006-5-3

Constructor Summary
ResourceBundle()
          Sole constructor.
 
Method Summary
static ResourceBundle getBundle(java.lang.String baseName)
          Gets a resource bundle using the specified base name, the default locale, and the caller's class loader.
static ResourceBundle getBundle(java.lang.String baseName, Locale locale)
          Gets a resource bundle using the specified base name and locale, and the caller's class loader.
static ResourceBundle getBundle(java.lang.String baseName, Locale locale, java.lang.ClassLoader loader)
          Gets a resource bundle using the specified base name, locale, and class loader.
abstract  Enumeration getKeys()
          Returns an enumeration of the keys.
 Locale getLocale()
          Returns the locale of this resource bundle.
 java.lang.Object getObject(java.lang.String key)
          Gets an object for the given key from this resource bundle or one of its parents.
 java.lang.String getString(java.lang.String key)
          Gets a string for the given key from this resource bundle or one of its parents.
 java.lang.String[] getStringArray(java.lang.String key)
          Gets a string array for the given key from this resource bundle or one of its parents.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResourceBundle

public ResourceBundle()
Sole constructor. (For invocation by subclass constructors, typically implicit.)

Method Detail

getString

public final java.lang.String getString(java.lang.String key)
Gets a string for the given key from this resource bundle or one of its parents. Calling this method is equivalent to calling
(String) getObject(key).

Parameters:
key - the key for the desired string
Returns:
the string for the given key
Throws:
NullPointerException - if key is null
MissingResourceException - if no object for the given key can be found
ClassCastException - if the object found for the given key is not a string

getStringArray

public final java.lang.String[] getStringArray(java.lang.String key)
Gets a string array for the given key from this resource bundle or one of its parents. Calling this method is equivalent to calling
(String[]) getObject(key).

Parameters:
key - the key for the desired string array
Returns:
the string array for the given key
Throws:
NullPointerException - if key is null
MissingResourceException - if no object for the given key can be found
ClassCastException - if the object found for the given key is not a string array

getObject

public final java.lang.Object getObject(java.lang.String key)
Gets an object for the given key from this resource bundle or one of its parents. This method first tries to obtain the object from this resource bundle using handleGetObject. If not successful, and the parent resource bundle is not null, it calls the parent's getObject method. If still not successful, it throws a MissingResourceException.

Parameters:
key - the key for the desired object
Returns:
the object for the given key
Throws:
NullPointerException - if key is null
MissingResourceException - if no object for the given key can be found

getLocale

public Locale getLocale()
Returns the locale of this resource bundle. This method can be used after a call to getBundle() to determine whether the resource bundle returned really corresponds to the requested locale or is a fallback.

Returns:
the locale of this resource bundle

getBundle

public static final ResourceBundle getBundle(java.lang.String baseName)
Gets a resource bundle using the specified base name, the default locale, and the caller's class loader. Calling this method is equivalent to calling
getBundle(baseName, Locale.getDefault(), this.getClass().getClassLoader()),
except that getClassLoader() is run with the security privileges of ResourceBundle. See getBundle for a complete description of the search and instantiation strategy.

Parameters:
baseName - the base name of the resource bundle, a fully qualified class name
Returns:
a resource bundle for the given base name and the default locale
Throws:
NullPointerException - if baseName is null
MissingResourceException - if no resource bundle for the specified base name can be found

getBundle

public static final ResourceBundle getBundle(java.lang.String baseName,
                                             Locale locale)
Gets a resource bundle using the specified base name and locale, and the caller's class loader. Calling this method is equivalent to calling
getBundle(baseName, locale, this.getClass().getClassLoader()),
except that getClassLoader() is run with the security privileges of ResourceBundle. See getBundle for a complete description of the search and instantiation strategy.

Parameters:
baseName - the base name of the resource bundle, a fully qualified class name
locale - the locale for which a resource bundle is desired
Returns:
a resource bundle for the given base name and locale
Throws:
NullPointerException - if baseName or locale is null
MissingResourceException - if no resource bundle for the specified base name can be found

getBundle

public static ResourceBundle getBundle(java.lang.String baseName,
                                       Locale locale,
                                       java.lang.ClassLoader loader)
Gets a resource bundle using the specified base name, locale, and class loader.

Conceptually, getBundle uses the following strategy for locating and instantiating resource bundles:

getBundle uses the base name, the specified locale, and the default locale (obtained from Locale.getDefault) to generate a sequence of candidate bundle names. If the specified locale's language, country, and variant are all empty strings, then the base name is the only candidate bundle name. Otherwise, the following sequence is generated from the attribute values of the specified locale (language1, country1, and variant1) and of the default locale (language2, country2, and variant2):

Candidate bundle names where the final component is an empty string are omitted. For example, if country1 is an empty string, the second candidate bundle name is omitted.

getBundle then iterates over the candidate bundle names to find the first one for which it can instantiate an actual resource bundle. For each candidate bundle name, it attempts to create a resource bundle:

If no result resource bundle has been found, a MissingResourceException is thrown.

Once a result resource bundle has been found, its parent chain is instantiated. getBundle iterates over the candidate bundle names that can be obtained by successively removing variant, country, and language (each time with the preceding "_") from the bundle name of the result resource bundle. As above, candidate bundle names where the final component is an empty string are omitted. With each of the candidate bundle names it attempts to instantiate a resource bundle, as described above. Whenever it succeeds, it calls the previously instantiated resource bundle's setParent method with the new resource bundle, unless the previously instantiated resource bundle already has a non-null parent.

Implementations of getBundle may cache instantiated resource bundles and return the same resource bundle instance multiple times. They may also vary the sequence in which resource bundles are instantiated as long as the selection of the result resource bundle and its parent chain are compatible with the description above.

The baseName argument should be a fully qualified class name. However, for compatibility with earlier versions, Sun's Java 2 runtime environments do not verify this, and so it is possible to access PropertyResourceBundles by specifying a path name (using "/") instead of a fully qualified class name (using ".").

Example: The following class and property files are provided: MyResources.class, MyResources_fr_CH.properties, MyResources_fr_CH.class, MyResources_fr.properties, MyResources_en.properties, MyResources_es_ES.class. The contents of all files are valid (that is, public non-abstract subclasses of ResourceBundle for the ".class" files, syntactically correct ".properties" files). The default locale is Locale("en", "GB").

Calling getBundle with the shown locale argument values instantiates resource bundles from the following sources:

The file MyResources_fr_CH.properties is never used because it is hidden by MyResources_fr_CH.class.

Parameters:
baseName - the base name of the resource bundle, a fully qualified class name
locale - the locale for which a resource bundle is desired
loader - the class loader from which to load the resource bundle
Returns:
a resource bundle for the given base name and locale
Throws:
NullPointerException - if baseName, locale, or loader is null
MissingResourceException - if no resource bundle for the specified base name can be found
Since:
1.2

getKeys

public abstract Enumeration getKeys()
Returns an enumeration of the keys.