モジュール java.base
パッケージ 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例外が発生した場合