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");
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!