Groovy - Anotasi

Anotasi adalah bentuk metadata yang memberikan data tentang program yang bukan merupakan bagian dari program itu sendiri. Anotasi tidak berpengaruh langsung pada pengoperasian kode yang dianotasi.

Anotasi terutama digunakan untuk alasan berikut -

  • Information for the compiler - Anotasi dapat digunakan oleh kompilator untuk mendeteksi kesalahan atau menyembunyikan peringatan.

  • Compile-time and deployment-time processing - Alat perangkat lunak dapat memproses informasi anotasi untuk menghasilkan kode, file XML, dan sebagainya.

  • Runtime processing - Beberapa anotasi tersedia untuk diperiksa pada waktu proses.

Di Groovy, anotasi dasar terlihat sebagai berikut -

@interface - Karakter tanda at (@) menunjukkan kepada kompilator bahwa yang berikut ini adalah anotasi.

Anotasi dapat menentukan anggota dalam the form metode tanpa badan dan nilai default opsional.

Anotasi dapat diterapkan ke jenis berikut -

Jenis String

Contoh Annotation untuk string diberikan di bawah ini -

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

Jenis enum

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

Jenis kelas

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

Nilai Anggota Anotasi

Saat anotasi digunakan, anotasi harus disetel setidaknya untuk semua anggota yang tidak memiliki nilai default. Contoh diberikan di bawah ini. Ketika Contoh anotasi digunakan setelah ditentukan, itu harus memiliki nilai yang ditetapkan padanya.

@interface Example {
   int status() 
}

@Example(status = 1)

Parameter Anotasi Penutupan

Fitur anotasi yang bagus di Groovy adalah Anda juga dapat menggunakan closure sebagai nilai anotasi. Oleh karena itu, anotasi dapat digunakan dengan berbagai macam ekspresi.

Sebuah contoh diberikan di bawah ini. Anotasi Onlyif dibuat berdasarkan nilai kelas. Kemudian anotasi diterapkan ke dua metode yang memposting pesan berbeda ke variabel hasil berdasarkan nilai variabel angka.

@interface OnlyIf {
   Class value() 
}  

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

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

Anotasi Meta

Ini adalah fitur anotasi yang cukup berguna di groovy. Mungkin ada saatnya Anda mungkin memiliki beberapa penjelasan untuk metode seperti yang ditunjukkan di bawah ini. Terkadang hal ini dapat menjadi berantakan untuk memiliki banyak anotasi.

@Procedure 
@Master class 
MyMasterProcedure {}

Dalam kasus seperti itu, Anda dapat menentukan meta-annotation yang menggabungkan beberapa anotasi bersama dan menerapkan meta annotation ke metode tersebut. Jadi untuk contoh di atas, Anda dapat terlebih dahulu menentukan koleksi anotasi menggunakan AnnotationCollector.

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

Setelah ini selesai, Anda dapat menerapkan meta-annotator berikut ke metode -

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