我使用的是java6注释处理api。我遵循了以下关于创建一个在构建时显示消息的注释处理器的优秀教程:
http://kerebus.com/2011/02/using-java-6-processors-in-eclipse/
然而,就我而言,我有一个简单的类:
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(value = ElementType.METHOD)
public @interface Criteria {
String id();
double width();
double height();
}
正如您所看到的,前面提到的注释在运行时使用元注释Retention提供给JVM。我在另一个类的源代码中使用此Criteria注释来注释方法,如下所示:
@Criteria(id = "fooBar",
width = 22,
height = 10
)
public void fooStream() {
System.out.println("foo stream method");
}
在运行时,我希望在另一个类中包含fooStream方法,前提是传入的变量与@Criteria注释中元素的值(即宽度和高度)匹配。我的问题是,如何在运行时将方法fooStream注入到另一个类中?这可能吗?我不想找任何代码示例,只想回答前面提到的两个问题。此外,在顶部的链接中,有一个使用JavaFileObject和Writer实例生成代码的示例,其中生成的代码作为字符串传递。