相关疑难解决方法(0)

插入Java编译器

我有一个后编译步骤来操作生成的类的Java字节码.我想让图书馆消费者尽可能轻松地生活,所以我正在研究如何使这个过程自动化,并且(如果可能的话)编译器不可知.

注释处理API提供了许多的期望特征(自动服务发现;通过Eclipse的支持).不幸的是,这是针对代码生成器,并不支持对现有工件的操作:

该工具的初始输入被认为是由第0轮创建的; 因此,尝试创建与其中一个输入相对应的源文件或类文件将导致FilerException.

API推荐的Decorator模式不是一个选项.

我可以看到如何使用运行时代理/检测执行该步骤,但这是一个比手动构建步骤更糟糕的选择,因为它需要任何人甚至被API外围触摸以非显而易见的方式配置其JVM.

有没有办法插入或包装javac调用的编译器工具?有没有人成功地颠覆了注释处理器来操纵字节码,无论文档说什么?

java compiler-construction instrumentation annotations

6
推荐指数
1
解决办法
752
查看次数

如何使用 Java 注释像 C 宏一样插入一些样板代码?

我想使用 Java 注释来插入代码(方法调用等)。假设我有这样的代码:

     ActionBar bar = getActionBar();
     assert bar != null;
     bar.setIcon(android.R.color.transparent);
     EventBus.getDefault().register(this);
     checkGPS();
Run Code Online (Sandbox Code Playgroud)

此代码出现在我的每个 Activity 类中。而不是每次我想要这样的东西时都写它:@PrepareActivity这将扩展代码。在 C 或 C++ 中,我可以简单地使用#define PrepareActivity \ .... 我可以用 Java 注释编写相同的内容吗?以及如何做到这一点?谢谢。

java code-generation annotations

5
推荐指数
1
解决办法
1651
查看次数