モジュール java.base
パッケージ java.util.spi

クラスAbstractResourceBundleProvider

java.lang.Object
java.util.spi.AbstractResourceBundleProvider
すべての実装されたインタフェース:
ResourceBundleProvider

public abstract class AbstractResourceBundleProvider extends Object implements ResourceBundleProvider
AbstractResourceBundleProviderは、ResourceBundleProviderのプロバイダ実装クラスの基本サポートを提供する抽象クラスです。

リソース・バンドルは、1つまたは複数の名前付きモジュール「サービス・プロバイダ・モジュール」にパッケージ化できます。 リソース・バンドルのconsumerは、ResourceBundle.getBundle(String)を呼び出すものです。 別のモジュールによって提供されるリソース・バンドル"com.example.app.MyResources"をロードするために消費者モジュールのためには、「サービス・ローダー」機構を使用します。 "com.example.app.spi.MyResourcesProvider"という名前のサービス・インタフェースを定義する必要があります。「サービス・プロバイダ・モジュール」は、次のように"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;
     }
 }
詳細については、ResourceBundleProviderを参照してください。

導入されたバージョン:
9
関連項目:
  • コンストラクタの詳細

    • AbstractResourceBundleProvider

      protected AbstractResourceBundleProvider()
      "java.properties"形式のAbstractResourceBundleProviderを構築します。 このコンストラクタはAbstractResourceBundleProvider("java.properties")と等価です。
    • AbstractResourceBundleProvider

      protected AbstractResourceBundleProvider(String... formats)
      AbstractResourceBundleProviderを指定されたformatsで構築します。 getBundle(String, Locale)メソッドは、指定されたformatsのリソース・バンドルを検索します。formatsは"java.class"または"java.properties"である必要があります。
      パラメータ:
      formats - リソース・バンドルのロードに使用されるフォーマット
      例外:
      NullPointerException - 指定されたformatsがnullの場合
      IllegalArgumentException - 指定されたformatsが"java.class"または"java.properties"でない場合。
  • メソッドの詳細

    • toBundleName

      protected String toBundleName(String baseName, Locale locale)
      このプロバイダが提供するbaseNameおよび localeのバンドル名を返します。
      APIのノート:
      リソース・バンドル・プロバイダは、パッケージが他の名前付きモジュール間で分割されていない場合、リソース・バンドルのベース名と同じパッケージにリソース・バンドルをパッケージ化することができます。 特定のベース名のリソース・バンドルを提供する複数のバンドル・プロバイダがある場合、リソース・バンドルは、分割されたパッケージを排除するために、言語ごとのグループ化またはリージョンごとのグループ化でパッケージ化できます。

      たとえば、baseName"p.resources.Bundle"の場合、Locale("ja", "", "XX")およびLocale("en")"p.resources.Bundle"のリソース・バンドル名はそれぞれ "p.resources.ja.Bundle_ja_ _XX"および"p.resources.Bundle_en"になります。

      このメソッドは、getBundle(String, Locale)メソッドのデフォルトの実装から呼び出されます。

      実装上のノート:
      このメソッドのデフォルトの実装は、ResourceBundle.Control.toBundleName(String, Locale)の実装と同じです。
      パラメータ:
      baseName - リソース・バンドルの基底名。完全指定クラス名
      locale - リソース・バンドルのロード対象となるロケール
      戻り値:
      リソース・バンドルのバンドル名
    • getBundle

      public ResourceBundle getBundle(String baseName, Locale locale)
      与えられたbaseNamelocaleResourceBundleを返します。
      定義:
      インタフェースResourceBundleProvider内のgetBundle
      実装上のノート:
      このメソッドのデフォルト実装では、baseNameおよびlocaleのバンドル名を取得するためにtoBundleNameメソッドを呼び出し、このプロバイダのモジュール内のローカル・バンドル名のリソース・バンドルを検索します。 このプロバイダが構築されたときに指定されたフォーマットのみを検索します。
      パラメータ:
      baseName - リソース・バンドルの基底バンドル名。完全指定クラス名
      locale - リソース・バンドルのインスタンス化対象となるロケール
      戻り値:
      指定されたbaseNamelocaleResourceBundle、またはリソース・バンドルが見つからない場合はnull
      例外:
      NullPointerException - baseNameまたはlocalenullである場合
      UncheckedIOException - リソース・バンドルのロード中にIO例外が発生した場合