Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden

xumbu

Mitglied
Servus.... ich hab eine Klasse in der jede Methode nur ausgeführt wird, wenn eine bestimmt Bedingung (meetCondition()) erfüllt wird.

Das sieht dann allerdings etwas unschön aus... nämlich ca so:

Code:
public class Klasse
{
public void methodA()
{
    if(!meetCondition()) return;
    //tue irgendwas
}

public void methodB()
{
    if(!meetCondition()) return;
    //tue irgendwas anderes
}

public void methodC()
{
    if(!meetCondition()) return;
    //tue noch was anderes
}
}



Schöner wäres es z.B so:

Code:
public class Klasse
{
@meetCondition
public void methodA()
{
    //tue irgendwas
}

@meetCondition
public void methodB()
{
    //tue irgendwas anderes
}

@meetCondition
public void methodC()
{
    //tue noch was anderes
}
}

Oder:

Code:
@meetCondition
public class Klasse
{

public void methodA()
{
    //tue irgendwas
}

public void methodB()
{
    //tue irgendwas anderes
}

public void methodC()
{
    //tue noch was anderes
}
}
Oder idealerweise sogar direkt im Interface für jede einzelne Methode


Lässt sich das irgendwie umsetzen?
 
Zuletzt bearbeitet:
Du könntest mal die Suchmaschine deiner Wahl mit Begriffen füllen wie:

Design by Contract

AOP, AspectJ

Dynamic Proxy

Mit den Annotationen führst Du ein Konzept ein,
dass erst einmal nicht unmittelbar in der Sprache umgesetzt ist,
sondern zum Beispiel einen Annotations Prozessor erfordert.

Da Java-Annotationen keine Expressions ausdrücken können,
sondern nur Strings, Primitive, Enums und Annotationen als Parameter erlauben,
musst Du noch einen anderen Mechanismus zum Realisieren Deiner Bedingung einbauen.

In Xtend (Suchmaschine) gibt es aktive Annotationen, die für sowas gedacht sind.

Wir können gerne noch weiter darüber diskutieren, dieses Thema interessiert mich auch:

Constraint Code Generator Heiner Kücker
 
Zuletzt bearbeitet:

Zurück
Oben