在我當前的項目中,我想將一些配置數據存儲在包註釋中,並由一些CDI生產者訪問它。如果在當前包中找不到註釋,則生產者將在包層次結構中向上搜索它。如何通過Package.getPackage(...)訪問包?
到目前爲止這麼好。不幸的是,似乎只有在第一次訪問其中一個類或接口後,我才能通過Package.getPackage("my.package")
訪問現有的包。
下面的例子說明了這種行爲:在包
類a.b
package a.b;
public class ClassInMitte {
}
例PROGRAMM訪問包oben.mitte
package other;
public class Refl {
public static void main(String[] args)
{
Package viaName = Package.getPackage("a.b");
System.out.println(viaName.getName());
System.out.println(viaName.hashCode());
}
}
運行Refl
結果一個NullPointerException
。 但是如果我添加new ClassInMitte()
作爲第一條語句,我可以訪問包信息。不知何故,我必須訪問包的內容才能訪問包信息本身。這是有道理的,否則類加載器必須在啓動時掃描整個類路徑。
但是netherless是否有一種簡單的方法來訪問包信息,而無需訪問包的內容?我知道我可以使用像reflections這樣的框架,但「輕量級」解決方案將是我的首選解決方案。
根據API文檔,如果包的內容被訪問,包將被隱式創建。我會看看反射庫提供的可能性。 – Oliver