Anotasi Java (Dengan Contoh)

Dalam tutorial ini, kita akan mempelajari apa itu anotasi, anotasi Java yang berbeda dan bagaimana menggunakannya dengan bantuan contoh.

Anotasi Java adalah metadata (data tentang data) untuk kode sumber program kita.

Mereka memberikan informasi tambahan tentang program ke kompilator tetapi bukan bagian dari program itu sendiri. Anotasi ini tidak mempengaruhi eksekusi program yang dikompilasi.

Anotasi dimulai dengan @. Sintaksnya adalah:

 @Annotation 

Mari kita ambil contoh @Overrideanotasi.

The @Overridepenjelasan menetapkan bahwa metode yang telah ditandai dengan penjelasan ini menimpa metode superclass dengan nama yang sama metode, jenis kembali, dan daftar parameter.

Ini tidak wajib digunakan @Overridesaat mengganti metode. Namun, jika kita menggunakannya, kompilator memberikan kesalahan jika ada yang salah (seperti tipe parameter yang salah) saat menimpa metode.

Contoh 1: Contoh Anotasi @Override

 class Animal ( public void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( @Override public void displayInfo() ( System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Keluaran

 Saya seekor anjing. 

Dalam contoh ini, metode displayInfo()tersebut ada di superclass Animal dan subclass Dog. Saat metode ini dipanggil, metode subkelas akan dipanggil, bukan metode di superclass.

Format anotasi

Anotasi juga dapat mencakup elemen (anggota / atribut / parameter).

1. Anotasi Penanda

Anotasi penanda tidak mengandung anggota / elemen. Ini hanya digunakan untuk menandai deklarasi.

Sintaksnya adalah:

 @Tokopedia 

Karena anotasi ini tidak mengandung elemen, tanda kurung dapat dikecualikan. Sebagai contoh,

 @Mengesampingkan 

2. Anotasi elemen tunggal

Anotasi elemen tunggal hanya berisi satu elemen.

Sintaksnya adalah:

 @AnnotationName (elementName = "elementValue") 

Jika hanya ada satu elemen, itu adalah konvensi untuk menamai elemen itu sebagai nilai.

 @AnnotationName (value = "elementValue") 

Dalam hal ini, nama elemen juga dapat dikecualikan. Nama elemen akan menjadi nilai secara default.

 @AnnotationName ("elementValue") 

3. Anotasi multi elemen

Anotasi ini berisi beberapa elemen yang dipisahkan dengan koma.

Sintaksnya adalah:

 @AnnotationName (elemen1 = "nilai1", elemen2 = "nilai2") 

Penempatan anotasi

Deklarasi apapun dapat ditandai dengan anotasi dengan meletakkannya di atas deklarasi tersebut. Pada Java 8, anotasi juga dapat ditempatkan sebelum tipe.

1. Deklarasi di atas

Seperti disebutkan di atas, penjelasan Java dapat ditempatkan di atas kelas, metode, antarmuka, bidang, dan deklarasi elemen program lainnya.

Contoh 2: Contoh Anotasi @SuppressWarnings

 import java.util.*; class Main ( @SuppressWarnings("unchecked") static void wordsList() ( ArrayList wordList = new ArrayList(); // This causes an unchecked warning wordList.add("programiz"); System.out.println("Word list => " + wordList); ) public static void main(String args()) ( wordsList(); ) ) 

Keluaran

 Daftar kata => (programiz) 

Jika program di atas dikompilasi tanpa menggunakan @SuppressWarnings("unchecked")anotasi, kompiler akan tetap mengkompilasi program tetapi akan memberikan peringatan seperti:

Main.java menggunakan operasi yang tidak dicentang atau tidak aman. Daftar kata => (programiz)

Kami mendapat peringatan

 Main.java menggunakan operasi yang tidak dicentang atau tidak aman 

karena pernyataan berikut.

 ArrayList wordList = new ArrayList(); 

This is because we haven't defined the generic type of the array list. We can fix this warning by specifying generics inside angle brackets .

 ArrayList wordList = new ArrayList(); 

2. Type annotations

Before Java 8, annotations could be applied to declarations only. Now, type annotations can be used as well. This means that we can place annotations wherever we use a type.

Constructor invocations

 new @Readonly ArrayList() 

Type definitions

 @NonNull String str; 

This declaration specifies non-null variable str of type String to avoid NullPointerException.

 @NonNull List newList; 

This declaration specifies a non-null list of type String.

 List newList; 

This declaration specifies a list of non-null values of type String.

Type casts

 newStr = (@NonNull String) str; 

extends and implements clause

 class Warning extends @Localized Message 

throws clause

 public String readMethod() throws @Localized IOException 

Type annotations enable Java code to be analyzed better and provide even stronger type checks.

Types of Annotations

1. Predefined annotations

  1. @Deprecated
  2. @Override
  3. @SuppressWarnings
  4. @SafeVarargs
  5. @FunctionalInterface

2. Meta-annotations

  1. @Retention
  2. @Documented
  3. @Target
  4. @Inherited
  5. @Repeatable

3. Custom annotations

These annotation types are described in detail in the Java Annotation Types tutorial.

Use of Annotations

  • Compiler instructions - Annotations can be used for giving instructions to the compiler, detect errors or suppress warnings. The built-in annotations @Deprecated, @Override, @SuppressWarnings are used for these purposes.
  • Compile-time instructions - Compile-time instructions provided by these annotations help the software build tools to generate code, XML files and many more.
  • Instruksi runtime - Beberapa penjelasan dapat ditentukan untuk memberikan instruksi kepada program pada waktu runtime. Anotasi ini diakses menggunakan Java Reflection.

Artikel yang menarik...