使用批注修改方法
如何更改方法在 Java 中执行的操作?
我的意思是,我正在尝试使用注释来制作以下代码
@Anno1(Argument = "Option1")
public class TestClass
{
@Anno2
public void test()
{
}
}
到
public class TestClass
{
private static StaticReference z;
public void test()
{
z.invokeToAll();
}
}
这是我试图做的一个非常简化的例子。 将有许多可能的组合,但到目前为止这不是我的问题。我的问题是如何将代码添加到方法Anno1
test()
如果可能的话,我正在寻找一个更通用的解决方案。例如。一种在方法中添加每种代码的方法(而不仅仅是一种方法.invokeToAll()
)
到目前为止,我正在使用,我有以下代码,但我不知道如何从那里继续import javax.annotation.processing.*;
private void processMethodAnnotations(RoundEnvironment env)
{
for (Element e : env.getElementsAnnotatedWith(Anno2.class))
{
//If it is a valid annotation over a method
if (e.getKind() == ElementKind.METHOD)
{
//What to do here :S
}else
{
processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING,"Not a method!", e);
}
}
}
我发现了一些关于Java Reflection的东西,但我还没有找到任何资源来帮助我完成我正在做的事情。
显然我在我的代码中extends AbstractProcessor
我发现本教程(http://www.zdnetasia.com/writing-and-processing-custom-annotations-part-3-39362483.htm)但是这涉及创建新类,而不仅仅是更改方法。并且不提供任何编辑该元素的方法(在我的情况下代表一个方法)。javax.lang.model.elements
我希望我的问题很清楚,符合规则。如果没有,请发表评论,我会澄清。谢谢。