我正在研究一個庫,該庫在編譯時根據帶註釋的類和字段生成類文件(打擊時)。到目前爲止,一切都很好(可以生成類)。但是,在啓動應用程序時(如需在onCreate
方法Application
中訪問該類),如何找到此類生成的類時遇到問題。在註釋處理過程中獲取Android應用程序包名稱
的代碼看起來是這樣的:
- Application class of an Android app -
@Override
public void onCreate() {
super.onCreate();
MyLib.setup(this);
}
和類MyLib
內,需要做的事情是這樣的:
public void setup(Application app) {
String className = String.format("%s.%s", "packageName", "generatedClassName");
Class<?> myGeneratedClass = Class.forName(className);
...
}
的問題是我不知道怎麼找該類不知道它的包名,也不知道如何找到它的包名。
我能想到的方法是將包名稱傳遞給@MyAnnotation(「package_name」)之類的註釋,以便在編譯時生成類並在運行時獲取該類時使用它。
但我只是想知道是否有其他更乾淨的方法來實現這一點。有什麼辦法可以: 1.在註解處理期間獲取應用程序包名稱 2.在運行時查找類而不知道其包(僅瞭解應用程序包)。我在MyLib.setup()
內嘗試過Package.getPackages()
。但是,這將返回一個空數組。
非常感謝您的回答。非常豐富。我很高興地發現AndroidAnnotations有這些方法。我發現插件選項非常有趣。你能否提供一些關於它的信息?謝謝 –