【发布时间】:2011-06-03 15:47:07
【问题描述】:
我正在使用 java 6 注释处理 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();
}
如您所见,上述注解可在运行时使用元注解“保留”提供给 JVM。我在另一个类的源代码中使用这个'Criteria'注释来注释一个方法,如下所示:
@Criteria(id = "fooBar",
width = 22,
height = 10
)
public void fooStream() {
System.out.println("foo stream method");
}
在运行时,我想在另一个类中包含“fooStream”方法,前提是传入的变量与@Criteria 注释中元素的值匹配,即“宽度”和“高度”。我的问题是,我怎样才能在运行时采用方法 'fooStream' 并将其注入另一个类?这甚至可能吗?我不是在寻找任何代码示例,只是对上述两个问题的回答。此外,在顶部的链接中,有一个使用“JavaFileObject”和“Writer”实例生成代码的示例,其中生成的代码作为字符串传递。
【问题讨论】:
-
您要问的是,在运行时将方法注入另一个类,不会用 java 编程语言计算。 Java中没有函数。您更多的是尝试在 JVM 上创建自己的新编程语言。
-
您能解释一下您要解决什么问题吗?你将如何在一个不知道它的类中使用外星方法?
标签: java annotations