Groovy - Anmerkungen

Anmerkungen sind eine Form von Metadaten, bei denen sie Daten zu einem Programm bereitstellen, das nicht Teil des Programms selbst ist. Anmerkungen haben keine direkten Auswirkungen auf den Betrieb des Codes, den sie mit Anmerkungen versehen.

Anmerkungen werden hauptsächlich aus folgenden Gründen verwendet:

  • Information for the compiler - Anmerkungen können vom Compiler verwendet werden, um Fehler zu erkennen oder Warnungen zu unterdrücken.

  • Compile-time and deployment-time processing - Software-Tools können Anmerkungsinformationen verarbeiten, um Code, XML-Dateien usw. zu generieren.

  • Runtime processing - Einige Anmerkungen können zur Laufzeit überprüft werden.

In Groovy sieht eine grundlegende Anmerkung wie folgt aus:

@interface - Das at-Zeichen (@) zeigt dem Compiler an, dass das Folgende eine Anmerkung ist.

Eine Anmerkung kann Mitglieder in definieren the form von Methoden ohne Körper und einem optionalen Standardwert.

Anmerkungen können auf die folgenden Typen angewendet werden:

Zeichenfolgentyp

Ein Beispiel für eine Anmerkung für eine Zeichenfolge finden Sie unten -

@interface Simple { 
   String str1() default "HelloWorld"; 
}

Aufzählungstyp

enum DayOfWeek { mon, tue, wed, thu, fri, sat, sun } 
@interface Scheduled {
   DayOfWeek dayOfWeek() 
}

Klassentyp

@interface Simple {} 
@Simple 
class User {
   String username
   int age
}
 
def user = new User(username: "Joe",age:1); 
println(user.age); 
println(user.username);

Annotation Member Values

Wenn eine Anmerkung verwendet wird, müssen mindestens alle Mitglieder festgelegt werden, die keinen Standardwert haben. Ein Beispiel ist unten angegeben. Wenn das Anmerkungsbeispiel nach seiner Definition verwendet wird, muss ihm ein Wert zugewiesen werden.

@interface Example {
   int status() 
}

@Example(status = 1)

Parameter für Abschlussanmerkungen

Eine gute Funktion von Anmerkungen in Groovy ist, dass Sie einen Abschluss auch als Anmerkungswert verwenden können. Daher können Anmerkungen mit einer Vielzahl von Ausdrücken verwendet werden.

Ein Beispiel hierfür ist unten angegeben. Die Annotation Onlyif wird basierend auf einem Klassenwert erstellt. Anschließend wird die Anmerkung auf zwei Methoden angewendet, die basierend auf dem Wert der Zahlenvariablen unterschiedliche Nachrichten an die Ergebnisvariable senden.

@interface OnlyIf {
   Class value() 
}  

@OnlyIf({ number<=6 }) 
void Version6() {
   result << 'Number greater than 6' 
} 

@OnlyIf({ number>=6 }) 
void Version7() {
   result << 'Number greater than 6' 
}

Meta-Anmerkungen

Dies ist eine nützliche Funktion für Anmerkungen in Groovy. Es kann vorkommen, dass Sie mehrere Anmerkungen für eine Methode wie die unten gezeigte haben. Manchmal kann es unordentlich werden, mehrere Anmerkungen zu haben.

@Procedure 
@Master class 
MyMasterProcedure {}

In einem solchen Fall können Sie eine Meta-Annotation definieren, die mehrere Annotationen zusammenfasst, und die Meta-Annotation auf die Methode anwenden. Für das obige Beispiel können Sie also die Sammlung von Anmerkungen mit dem AnnotationCollector definieren.

import groovy.transform.AnnotationCollector
  
@Procedure 
@Master 
@AnnotationCollector

Sobald dies erledigt ist, können Sie den folgenden Meta-Annotator auf die Methode anwenden:

import groovy.transform.AnnotationCollector
  
@Procedure 
@Master 
@AnnotationCollector
  
@MasterProcedure 
class MyMasterProcedure {}