是否可以为一个类编写一个Java注释来生成一个覆盖该类父方法的方法?
就我而言,我想在 android 中执行此操作:
@OverrideOnTouch
Foo 类扩展了 Activity {
并且它会在编译时生成一个 onTouch 重写方法。
可能吗?
最佳答案
注释无法生成代码。
您可以编写一个注释处理器,它在编译时无论在哪里找到注释都添加了一个方法。
这是有关此主题的教程:
但是,请注意,编写注释处理器需要大量的 Java 编码工作。另请注意,注释处理器(使用 AnnotationProcessor API 实现并通过 Java 编译器调用)无法修改 Java 源代码。它只能生成新的“.java”文件。
因此,如果您想将新方法注入(inject)现有类中,则需要编译该类,然后使用使用 BCEL 或等效项的编译后注释处理器将所需方法添加到“.class”中编译器生成的文件。实现基于 BCEL 的处理器……甚至更加困难。当您升级 Java 时,此类处理器很容易损坏。 (很容易对相关规范不支持的 JVM/字节码级别实现做出假设......并且当平台发生变化时不再“工作”。)
此问题的一些答案中提到了这种方法:
关于java - 您可以生成使用 Java 注释覆盖方法的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42315580/