【发布时间】:2016-06-24 03:18:46
【问题描述】:
我正在开发一个库,该库在编译时(点击构建时)基于带注释的类和字段生成类文件。到目前为止一切都很好(可以生成类)。但是,我在启动应用程序时如何找到这样一个生成的类有一个问题(该类需要在Application 的onCreate 方法中访问)。
代码如下所示:
- 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.注解处理时获取Application包名
2.在运行时寻找一个类而不知道它的包(只知道Application包)。我确实在MyLib.setup() 中尝试了Package.getPackages()。但是这会返回一个空数组。
【问题讨论】:
标签: java android annotation-processing