Führen Sie eine Methode vor und nach einer aufgerufenen Methode in Java aus

8

Ich versuche, ein Java-Programm so zu schreiben, dass nach dem Aufruf einer methodA () zuerst eine Methode mit dem Namen methodBeforeA () aufgerufen wird und dann methodA () wird ausgeführt, gefolgt von einer anderen Methode namens named, methodAfterA () . Das ist sehr ähnlich dem, was Junit mit Annotationen macht (mit @Before, @Test, @After), also denke ich, dass es möglich sein sollte, Reflektionen zu verwenden, aber ich habe keine sehr gute Ahnung.

    
Vanp 07.03.2012, 06:49
quelle

2 Antworten

5

AspectJ ermöglicht es Ihnen, Schnittpunkte vor dem Methodeneintrag festzulegen und nach dem Beenden der Methode.

Ссылка

  

In AspectJ selektieren Pointcuts bestimmte Join Points im Programmablauf. Zum Beispiel der Pointcut

%Vor%      

wählt jeden Join-Punkt aus, bei dem es sich um eine Methode mit der Signatur void Point.setX(int) handelt - also Point s void setX method mit einem einzelnen int -Parameter.

    
Mike Samuel 07.03.2012, 06:53
quelle
3

Dies würde erfordern, den Methodencode zu ändern, um Aufrufe an die anderen Methoden einzufügen. Mit der Java-Reflektion können Sie eine Menge Dinge tun, aber Sie können den Methodencode nicht dynamisch ändern.

Was JUnit tut, ist anders. Er identifiziert jede mit @Before , @Test und @After annotierte Methode und führt dann etwas aus:

%Vor%

Sie können sicherlich so etwas tun, um sicherzustellen, dass Sie die "Vorher" - und "Nachher" -Methoden aufrufen, nachdem Sie die betreffende Methode aufgerufen haben. Aber Sie können nicht alle Anrufer dazu zwingen, dasselbe zu tun.

    
Taymon 07.03.2012 06:57
quelle

Tags und Links