Class.getResource() 和ClassLoader.getResource() 之間的差異
Class.getResource() 和ClassLoader.getResource()都是用來取得與類別關聯的資源。然而,它們的行為有細微的差別。
Class.getResource() 接受的資源名稱可以是相對的也可以是絕對的。相對資源名稱是相對於類別的包進行解釋的。另一方面,ClassLoader.getResource() 始終將資源名稱視為絕對名稱。
為了說明這種差異:
// Find the resource "xyz.txt" relative to the class's package String resource1 = foo.bar.Baz.class.getResource("xyz.txt").getPath(); // Find the resource "xyz.txt" absolutely String resource2 = foo.bar.Baz.class.getClassLoader().getResource("foo/bar/xyz.txt").getPath();
在這種情況下,resource1 將引用檔案「xyz.txt」。 txt”包中的“foo.bar”,而resource2將引用相同的文件,但使用絕對路徑。
在目錄列表中快取
您對目錄清單中快取的觀察值是正確的。時,載入類別後對目錄結構所做的任何變更都不會反映出來。名稱的資源。將委託給ClassLoader.getSystemResource(java.lang.String)。 。
以上是Class.getResource() 與 ClassLoader.getResource():資源載入的主要差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!