public abstract class LocaleServiceProvider extends Object
これは、ロケールに依存するすべてのサービスプロバイダインタフェース (SPI) のスーパークラスです。
ロケール依存サービスプロバイダインタフェースは、java.text
および java.util
パッケージ内のロケール依存クラスに対応するインタフェースです。これらのインタフェースを使えば、これらのパッケージでロケール依存オブジェクトを構築したりローカライズされた名前を取得したりできます。java.text
および java.util
パッケージ内のロケールに依存するファクトリメソッドや名前取得メソッドは、プロバイダインタフェースの実装を使用することで、Java 実行環境自体がサポートする一連のロケールに含まれないロケールをサポートします。
特定の具象プロバイダクラスが複数の構成ファイル内、または同じ構成ファイル内で繰り返し指定されている場合、重複した指定は無視されます。特定のプロバイダを指定した構成ファイルを、プロバイダ自体と同じ JAR ファイル (またはその他の配布単位) 内に含める必要はありません。このプロバイダには、構成ファイルの検索時に最初に照会されたクラスローダーからアクセスできなければいけません。なお、そのクラスローダーは、ファイルをロードしたクラスローダーと同一であるとは限りません。
たとえば、DateFormatProvider
クラスの実装は、次のファイルを含む JAR ファイルの形態をとるべきです。
META-INF/services/java.text.spi.DateFormatProviderさらに、ファイル
java.text.spi.DateFormatProvider
には次のような行が含まれているべきです。
com.foo.DateFormatProviderImpl
これは、DateFormatProvider
を実装するクラスの完全指定クラス名です。
java.text
および java.util
パッケージ内のロケールに依存するファクトリメソッドや名前取得メソッドは、サービスプロバイダのメソッドを必要に応じて呼び出すことで、要求されたロケールをサポートします。それらのメソッドはまず、Java 実行環境自体が要求されたロケールをサポートするかどうかをチェックし、サポートが使用可能であればそのサポートを使用します。それ以外の場合、それらは、適切なインタフェースのインストール済みプロバイダの getAvailableLocales()
メソッドを呼び出すことで、要求されたロケールをサポートするプロバイダを検索します。そのようなプロバイダが見つかった場合、そのプロバイダのその他のメソッドが呼び出され、要求されたオブジェクトまたは名前が取得されます。ロケールをサポートするかどうかをチェックする場合、ロケールの拡張は無視されます。Java 実行時環境自体もインストールされているプロバイダも要求されたロケールをサポートしない場合、メソッドは候補ロケールのリストを進み、マッチが見つかるまで、それぞれ使用可能かどうかのチェックを繰り返します。候補ロケールのリストの作成に使用されるアルゴリズムは、デフォルトで ResourceBunlde
によって使用されるものと同じです (詳細については getCandidateLocales
を参照してください)。候補リストからロケールが解決された場合でも、要求されたオブジェクトまたは名前を返すメソッドは、拡張を含む元の要求されたロケールで呼び出されます。Java 実行時環境は、この処理が確実に終了するように、すべてのロケールに依存するサービスのルートロケールをサポートする必要があります。
名前のプロバイダ (その他のオブジェクトのプロバイダではない) は、getAvailableLocales
の戻り値に含めることでサポートを宣言したロケールに対しても、一部の名前要求に null を返すことが許されています。同様に、Java 実行環境自体は、サポートするすべてのロケールのすべての名前を保持していなくてもかまいません。これは、名前の要求対象となるオブジェクト群が、規模が大きかったり時間の経過に従って変化したりする可能性があるため、それらを完全にカバーすることが常に実現可能とはかぎらないからです。Java 実行環境またはプロバイダが名前の代わりに null を返した場合、そのロケールがまるでサポートされていなかったかのように、上記で説明したとおりに検索処理が進みます。
修飾子 | コンストラクタと説明 |
---|---|
protected |
LocaleServiceProvider()
唯一のコンストラクタです。
|
protected LocaleServiceProvider()
public abstract Locale[] getAvailableLocales()
注: サービスプロバイダのルックアップ時、Locale
の拡張は無視されます。そのため、このメソッドによって返される配列には、拡張だけが異なる複数の Locale
オブジェクトを含めないでください。
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.