【发布时间】:2013-02-14 10:19:27
【问题描述】:
我正在尝试找到如何实现类似于 Eclipse 功能“添加未实现的方法”的 hack。
我不想在编写代码时添加这些方法,而是想在编译期间执行此操作,使用模板生成方法体。此外,我不想修改原始 .java 源文件。
例如,假设我有以下内容:
interface I { void foo(); }
class C implements I {
public static void main(String[] args) { new C().foo(); }
}
编译它通常会导致错误,因为I.foo 没有实现。
我希望编译成功并随后执行以使用我的模板。模板可以像{throw UnsupportedOpeationException()} 这样简单。我确实希望能够获得有关方法和实现的接口的更多信息并在模板中使用它,但这应该不难?
我的第一个想法是尝试注释 (AutoImplementMethods),但注释处理器无法修改它正在处理的注释代码。
我对@987654326@ 有点满意,但我不明白它是如何使用类型间声明来完成的。
除了使用我自己的 java 解析器和生成代码之外,有什么建议可以做到这一点吗?
【问题讨论】:
-
我使用 JDT Eclipse 进行了一些代码注入。它会生成 Java 文件的抽象语法树 (AST),并解决了各种绑定问题,您可以更改树,它会直接更改代码。
-
@ShivamKalra 你知道某处的教程或示例吗?我确实需要一种适用于
javac的方法,但我可以使用 Eclipse 查看代码生成部分 -
老实说这方面的教程并不多!但这是我在网上找到的一个 -> vogella.com/articles/EclipseJDT/article.html
-
您能否将您的 cmets 转换为包含单独链接的回复?
标签: java code-generation aspectj cglib