Ändern einer Methode mithilfe von Anmerkungen

Wie kann ich ändern, was eine Methode in Java ?

Ich meine, ich bin versucht, Anmerkungen zu machen, den folgenden code

@Anno1(Argument = "Option1")
public class TestClass
{       
    @Anno2
    public void test()
    {
    }

}

In

public class TestClass
{
    private static StaticReference z;

    public void test()
    {
           z.invokeToAll();
    }

}

Dies ist ein sehr Vereinfachtes Beispiel, was ich versuche zu tun. Anno1 haben viele mögliche Kombinationen, aber das ist nicht mein problem, so weit. Mein problem ist, wie Sie code hinzufügen, um die Methode test()

Ich bin auf der Suche nach einer generischen Lösung, wenn möglich. ZB. Ein Weg, um fügen Sie jede Art von code in der Methode (nicht nur ein Weg, um .invokeToAll())

Bisher bin ich mit import javax.annotation.processing.*; und ich habe den folgenden code, aber ich weiß nicht, wie es weiter gehen von dort aus

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);               
        }           
    }
}

Ich habe etwas gefunden, über die Java-Reflection, aber ich habe nicht gefunden eine Quelle, um mir zu helfen mit dem, was ich Tue.

Natürlich habe ich extends AbstractProcessor in meinem code

Ich gefunden haben, dieses tutorial (http://www.zdnetasia.com/writing-and-processing-custom-annotations-part-3-39362483.htm), Aber dies betrifft eine neue Klasse zu erstellen, nicht nur die änderung der Methode. und die javax.lang.model.elements bieten keine Möglichkeit zum Bearbeiten der Elemente (die in meinem Fall stellt eine Methode).

Ich hoffe meine Frage ist klar und inline mit den Regeln. Falls nicht, bitte Kommentar, und ich werde das klären. Danke.

InformationsquelleAutor | 2011-01-31
Schreibe einen Kommentar