-
- 既知のすべての実装クラス:
AbstractResourceBundleProvider
public interface ResourceBundleProviderResourceBundleProviderは、リソース・バンドルのサービス・プロバイダ・インタフェースです。 これは、ResourceBundle.getBundleファクトリ・メソッドによって使用され、ServiceLoaderを介してモジュールとしてデプロイされるサービス・プロバイダを検索およびロードします。リソース・バンドル・サービスの開発
特定のbaseNameのリソース・バンドルのサービスには、次の形式の完全修飾クラス名が必要です。
サービス・タイプは、リソース・バンドル・プロバイダとは別のモジュールにパッケージ化できるため、<package of baseName> + ".spi." + <simple name of baseName> + "Provider"spiサブパッケージ内にあります。 たとえば、com.example.app.MyResourcesという名前のリソース・バンドルのサービスは、com.example.app.spi.MyResourcesProviderである必要があります。package com.example.app.spi; public interface MyResourcesProvider extends ResourceBundleProvider { }リソース・バンドル・サービス・プロバイダのデプロイ
リソース・バンドルは、モジュール内の1つ以上のサービス・プロバイダにデプロイできます。 たとえば、com.example.app.spi.MyResourcesProviderという名前のサービスのプロバイダには、次の実装クラスがあります。
この例では、フランス語ロケールのimport com.example.app.spi.MyResourcesProvider; class MyResourcesProviderImpl extends AbstractResourceBundleProvider implements MyResourcesProvider { public MyResourcesProviderImpl() { super("java.properties"); } // this provider maps the resource bundle to per-language package protected String toBundleName(String baseName, Locale locale) { return "p." + locale.getLanguage() + "." + baseName; } public ResourceBundle getBundle(String baseName, Locale locale) { // this module only provides bundles in French if (locale.equals(Locale.FRENCH)) { return super.getBundle(baseName, locale); } // otherwise return null return null; } }com.example.app.MyResourcesリソース・バンドルを示します。 従来、すべてのロケールのリソース・バンドルは、リソース・バンドルのベース名と同じパッケージにパッケージ化されています。 複数のモジュールにリソース・バンドルをデプロイする場合、および同じ名前のパッケージを含む2つのモジュール(split package)はサポートされません。この例では、このプロバイダが言語ごとのパッケージ(フランス語ロケールの場合はcom.example.app.fr)にリソース・バンドルをパッケージ化する、各モジュールのリソース・バンドルを異なるパッケージにパッケージ化できます。プロバイダは複数のサービスを提供でき、各サービスは異なるベース名のリソース・バンドルのサービスです。
AbstractResourceBundleProviderはResourceBundleProviderの基本的な実装を提供し、サブクラスはtoBundleNameメソッドをオーバーライドして、ロードされるリソースのプロバイダ固有の場所(言語ごとのパッケージなど)を返すことができます。 プロバイダは、ResourceBundleProvider.getBundleメソッドをオーバーライドできます。たとえば、サポートされている既知のロケールのみを検索したり、XMLなどの他の形式でリソース・バンドルを返したりできます。このプロバイダ・モジュールのモジュール宣言では、次のディレクティブを指定します。
provides com.example.app.spi.MyResourcesProvider with com.example.impl.MyResourcesProviderImpl;プロバイダからのリソース・バンドルの取得
サービス・プロバイダからリソース・バンドルを取得するためにResourceBundle.getBundleファクトリ・メソッドのいずれかをコールするコンシューマ・モジュールのモジュール宣言では、次のディレクティブを指定する必要があります。uses com.example.app.spi.MyResourcesProvider;ResourceBundle.getBundle("com.example.app.MyResource", locale)は、com.example.app.spi.MyResourcesProviderサービスのプロバイダを検索してロードし、ResourceBundleProvider.getBundle("com.example.app.MyResource", locale)を起動して、指定されたベース名とロケールのリソース・バンドルを検索します。 コンシューマ・モジュールがcom.example.app.spi.MyResourcesProviderのリソース・バンドル・サービス・プロバイダの場合、ResourceBundle.getBundleはサービス・プロバイダからのみリソース・バンドルを検索します。 それ以外の場合、ResourceBundle.getBundleは、コールされるResourceBundle.getBundleメソッドの指定に従って、他のモジュールおよびクラス・パスのリソース・バンドルの検索を続行できます。- 導入されたバージョン:
- 9
- 関連項目:
AbstractResourceBundleProvider、リソース・バンドルおよび名前付きモジュール、ServiceLoader
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 修飾子と型 メソッド 説明 ResourceBundlegetBundle(String baseName, Locale locale)指定されたバンドル名およびロケールのResourceBundleを返します。
-
-
-
メソッドの詳細
-
getBundle
ResourceBundle getBundle(String baseName, Locale locale)
指定されたバンドル名およびロケールのResourceBundleを返します。 このメソッドは、指定されたパラメータにResourceBundleが見つからない場合にnullを返します。- パラメータ:
baseName- リソース・バンドルの基底バンドル名。完全指定クラス名locale- リソース・バンドルをロードするロケール- 戻り値:
- 指定されたパラメータに対して作成されたResourceBundle、または指定されたパラメータの
ResourceBundleが見つからない場合はnull
-
-