0

このコードに出くわしました

ResourceBundle BUNDLE = ResourceBundle.getBundle("abcdE");

ロードするファイルをどこで見つけることができるのでしょうか? ディスクにファイルabcdEが見つかりませんでした。

4

1 に答える 1

1

ResourceBundle の getBundle ドキュメントから:

*....getBundle は次に、候補のバンドル名を繰り返し処理して、実際のリソース バンドルをインスタンス化できる最初の名前を見つけます。候補となるバンドル名ごとに、リソース バンドルの作成を試みます。

最初に、候補のバンドル名を使用してクラスをロードしようとします。そのようなクラスが、指定されたクラス ローダーを使用して検出およびロードでき、ResourceBundle と互換性のある割り当てがあり、ResourceBundle からアクセス可能であり、インスタンス化できる場合、getBundle はこのクラスの新しいインスタンスを作成し、それを結果のリソース バンドルとして使用します。

それ以外の場合、getBundle はプロパティ リソース ファイルを見つけようとします。すべての "." を置き換えることにより、候補のバンドル名からパス名を生成します。"/" を含む文字と文字列 ".properties" を追加します。ClassLoader.getResource を使用して、この名前の「リソース」を見つけようとします。(getResource の意味での「リソース」は、リソース バンドルの内容とは何の関係もないことに注意してください。それは、ファイルなどの単なるデータのコンテナーです。)「リソース」が見つかった場合は、そのコンテンツからの新しい PropertyResourceBundle インスタンス。成功した場合、このインスタンスは結果のリソース バンドルになります。*

だから私がこれから理解しているのは:

a.b.c.d.E

クラスではない場合、パスを持つプロパティ ファイルを探します。

a/b/c/d/E.properties
于 2013-09-06T11:57:37.440 に答える