您是否可以生成使用Java注释覆盖方法的代码?

时间:2017-02-18 13:11:19

标签: java android annotations java-annotations

是否可以为生成覆盖类父类方法的方法的类编写Java注释?

在我的情况下,我想在android中执行:

@OverrideOnTouch class Foo extends Activity {

它将在编译时生成onTouch覆盖方法。

有可能吗?

1 个答案:

答案 0 :(得分:4)

注释无法生成代码。

可以编写一个注释处理器,它在编译时添加了一个方法,无论它找到你的注释。

以下是关于此主题的教程:

但是,请注意编写注释处理器是一项重要的Java编码工作。另请注意,注释处理器(使用AnnotationProcessor API实现并通过Java编译器调用)无法修改Java源代码。它只能生成新的“.java”文件。

因此,如果要将新方法注入现有类,则需要编译该类,然后使用使用BCEL或等效项的后编译注释处理器将所需方法添加到“.class”编译器生成的文件。实现基于BCEL的处理器......更难。升级Java时,这类处理器有崩溃的趋势。 (很容易对相关规范不支持的JVM /字节码级实现做出假设......当平台发生变化时,不再“工作”。)

本问题的一些答案中提到了这种方法: