假設一個java代碼庫有一個名爲「com.example」的包。如果類加載器還沒有加載任何 -有沒有辦法強制類加載器加載一個包,即使它們的類沒有被加載?
在運行時,我們可以通過調用
Packages[] ps = Package.getPackages();
的問題是通過調用
Package p = Package.getPackage("com.example"); //(returns null)
甚至得到所有包的列表得到這個包這些函數調用將無法使用它。我們可以迫使它先在包中的一個類加載包通過壓裝,像這樣:
this.getClass().getClassLoader().loadClass("com.example.SomeClass");
Package p = Package.getPackage("com.example"); //(returns non-null)
然而,這是哈克,並需要提前知道一些類的名稱屬於包裹。
所以問題是 - 有沒有辦法通過名稱獲取Package實例,無論ClassLoader是否做了什麼?我對這種情況下類加載/包裝似乎如何工作的假設是否準確?
謹防https://stackoverflow.com/questions/3455267/why-does-class-getpackage-return-the-same-package-for-classes-from-different-pac的 – Vadzim 2017-11-28 20:38:53