ホームページ > Java > &#&チュートリアル > Class.getResource() と ClassLoader.getResource(): Java でのリソースの読み込みにどちらを使用する場合?

Class.getResource() と ClassLoader.getResource(): Java でのリソースの読み込みにどちらを使用する場合?

DDD
リリース: 2024-12-25 00:32:14
オリジナル
921 人が閲覧しました

Class.getResource() vs. ClassLoader.getResource(): When to Use Which for Resource Loading in Java?

Class.getResource() と ClassLoader.getResource() の違いを理解する

Java の Class.getResource() と ClassLoader .getResource() メソッドは、特定のクラスまたはクラス ローダーに関連付けられたリソースへのアクセスを提供します。どちらの方法にも類似点はありますが、動作と適用性には明確な違いがあります。

リソースの命名規則

重要な違いの 1 つは、リソースの命名方法にあります。 Class.getResource() は、クラスのパッケージに対して相対的に解釈される「相対」リソース名を受け入れます。対照的に、ClassLoader.getResource() は「絶対」リソース名を想定しており、常に絶対パスとみなされます。

例:

// Get resource from the package of the class
String resource1 = foo.bar.Baz.class.getResource("xyz.txt");

// Get resource as an absolute path
String resource2 = foo.bar.Baz.class.getClassLoader().getResource("foo/bar/xyz.txt");
ログイン後にコピー

この例では、resource1 と resource2同じファイルを表します。ただし、リソース名の先頭にスラッシュ「/」が付いている場合、両方のメソッドで絶対リソース パスが生成されます。

キャッシュへの影響

質問によると、キャッシュがディレクトリ リスト レベルで発生することを示唆する証拠はありません。どちらのメソッドも、基礎となるクラス ローダーのメカニズムを利用し、キャッシュ ポリシーはそのレベルで定義されます。

パフォーマンスに関する考慮事項

パフォーマンスの観点からは、Class.getResource() を次のように使用します。相対名は、ClassLoader.getResource() を使用するよりもわずかに高速になる可能性があります。これは、クラス ローダーが相対パスを解決するためにクラスパスをナビゲートする必要がないためです。

結論

Class.getResource() と ClassLoader.getResource() は機能します。目的が異なるため、それに応じて使用する必要があります。 Class.getResource() はパッケージ階層内のリソースにアクセスするのに適していますが、ClassLoader.getResource() は絶対リソース パスを処理するのに適しています。 2 つの方法のどちらを選択するかは、特定のリソースの命名要件とパフォーマンスの考慮事項によって異なります。

以上がClass.getResource() と ClassLoader.getResource(): Java でのリソースの読み込みにどちらを使用する場合?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート