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

クラスAbstractResourceBundleProvider

  • すべての実装されたインタフェース:
    ResourceBundleProvider

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

    リソース・バンドルは、1つ以上の名前付きモジュールサービス・プロバイダ・モジュールにパッケージ化できます。 リソース・バンドルのコンシューマは、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)
        指定されたformatsAbstractResourceBundleProviderを構築します。 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)
        指定されたbaseNameおよびlocaleResourceBundleを返します。
        定義:
        インタフェースResourceBundleProvidergetBundle
        実装上のノート:
        このメソッドのデフォルト実装では、toBundleNameメソッドをコールして、baseNameおよびlocaleのバンドル名を取得し、このプロバイダのモジュールでローカルなバンドル名のリソース・バンドルを検索します。 このプロバイダの作成時に指定された書式のみが検索されます。
        パラメータ:
        baseName - リソース・バンドルの基底バンドル名。完全指定クラス名
        locale - リソース・バンドルのインスタンス化対象となるロケール
        戻り値:
        指定されたbaseNameおよびlocaleResourceBundle、またはリソース・バンドルが見つからない場合はnull
        例外:
        NullPointerException - baseNameまたはlocalenullである場合
        UncheckedIOException - リソース・バンドルのロード中にIO例外が発生した場合