【问题标题】:Can you generate code the overrides a method using Java annotations?您可以使用 Java 注释生成覆盖方法的代码吗?
【发布时间】:2017-07-08 00:31:06
【问题描述】:

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

就我而言,我想在 android 中进行:

@OverrideOnTouch class Foo extends Activity {

它会在编译时生成一个onTouch覆盖方法。

有可能吗?

【问题讨论】:

    标签: java android annotations java-annotations


    【解决方案1】:

    注解不能生成代码。

    可以编写一个注解处理器,在编译时添加一个方法,只要它找到您的注解。

    这里有一个关于这个主题的教程:

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

    因此,如果您想将新方法注入现有类,则需要编译该类,然后使用使用 BCEL 或等效的编译后注释处理器将所需的方法添加到“.class”编译器生成的文件。实现基于 BCEL 的处理器……更难。当您升级 Java 时,此类处理器往往会出现故障。 (很容易对相关规范不支持的 JVM / 字节码级别实现做出假设......并且在平台更改时不再“工作”。)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 2014-05-06
      • 2021-03-02
      • 1970-01-01
      相关资源
      最近更新 更多