Rumah > Java > javaTutorial > Class.getResource() lwn. ClassLoader.getResource(): Bila Perlu Menggunakan Yang Mana untuk Pemuatan Sumber dalam Java?

Class.getResource() lwn. ClassLoader.getResource(): Bila Perlu Menggunakan Yang Mana untuk Pemuatan Sumber dalam Java?

DDD
Lepaskan: 2024-12-25 00:32:14
asal
957 orang telah melayarinya

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

Memahami Perbezaan antara Class.getResource() dan ClassLoader.getResource()

Di Java, Class.getResource() dan ClassLoader Kaedah .getResource() menyediakan akses kepada sumber yang dikaitkan dengan pemuat kelas atau kelas tertentu. Walaupun kedua-dua kaedah berkongsi persamaan, terdapat perbezaan yang berbeza dalam tingkah laku dan kebolehgunaannya.

Konvensyen Penamaan Sumber

Satu perbezaan penting terletak pada cara sumber dinamakan. Class.getResource() menerima nama sumber "relatif", ditafsirkan secara relatif kepada pakej kelas. Sebaliknya, ClassLoader.getResource() menjangkakan nama sumber "mutlak", sentiasa dianggap laluan mutlak.

Contoh:

// 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");
Salin selepas log masuk

Dalam contoh ini, sumber1 dan sumber2 mewakili fail yang sama. Walau bagaimanapun, jika nama sumber diawali dengan garis miring "/", kedua-dua kaedah akan menghasilkan laluan sumber mutlak.

Kesan pada Cache

Seperti soalan, terdapat tiada bukti yang menunjukkan bahawa sebarang caching berlaku pada peringkat penyenaraian direktori. Kedua-dua kaedah menggunakan mekanisme pemuat kelas asas dan dasar caching ditakrifkan pada tahap itu.

Pertimbangan Prestasi

Dari segi prestasi, menggunakan Class.getResource() dengan nama relatif boleh menjadi sedikit lebih pantas daripada menggunakan ClassLoader.getResource(). Ini kerana pemuat kelas tidak perlu menavigasi laluan kelas untuk menyelesaikan laluan relatif.

Kesimpulan

Class.getResource() dan ClassLoader.getResource() berkhidmat tujuan yang berbeza dan harus digunakan dengan sewajarnya. Class.getResource() sesuai untuk mengakses sumber dalam hierarki pakej, manakala ClassLoader.getResource() lebih sesuai untuk mengendalikan laluan sumber mutlak. Pilihan antara dua kaedah bergantung pada keperluan penamaan sumber khusus dan pertimbangan prestasi.

Atas ialah kandungan terperinci Class.getResource() lwn. ClassLoader.getResource(): Bila Perlu Menggunakan Yang Mana untuk Pemuatan Sumber dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan