java.util.spi
public abstract class LocaleServiceProvider extends Object
This is the superclass of all the Locale
service
provider interfaces or SPIs. The locale SPIs are used
to allow for the provision of additional support for
locale-specific data. The runtime environment has its
own collection of locale data, but these interfaces allow
this to be extended by external classes.
Service providers are created as concrete implementations
of these interfaces, and accessed using the extension
mechanism, realised by ServiceLoader
. When a factory
method of one of the locale-specific classes (such as
DateFormatSymbols
or Currency
)
is called, the runtime environment is first asked to
provide data for the specified locale. If the runtime
environment fails to provide this, then the offer is
made to service providers which implement the appropriate
interface.
Each provider implements the method specified by this
class, getAvailableLocales()
. This method is
called first to determine whether the provider will be of
any use in providing data for the specified locale. If
a provider is found to be capable, then a more specific
method appropriate to the class requiring the data will
be called. In the case of DateFormatSymbols
,
this would be
java.text.spi.DateFormatSymbols#getInstance(Locale)
.
If neither a service provider nor the runtime environment itself can fulfill the request, a fallback procedure is engaged. The locale is modified by applying the first applicable rule:
'_'
, then
this and everything following it is trimmed.The modified locale is then used to start the same process again. The root locale (@link java.util.Locale#ROOT} must be supported by the runtime environment in order to terminate this cycle.
Note that any names returned by the providers may
be null
. Returning a null
name is considered equivalent to not supporting a
particular locale.
Modifier | Constructor and Description |
---|---|
protected |
LocaleServiceProvider()
Constructs a new
LocaleServiceProvider . |
Modifier and Type | Method and Description |
---|---|
abstract Locale[] |
getAvailableLocales()
Returns an array of
Locale instances,
for which the provider can supply localized data. |
protected LocaleServiceProvider()
LocaleServiceProvider
.
Provided for implicit invocation by subclasses.public abstract Locale[] getAvailableLocales()
Locale
instances,
for which the provider can supply localized data.