Anotasi Java (Dengan Contoh)

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

Anotasi Java adalah metadata (data mengenai data) untuk kod sumber program kami.

Mereka memberikan maklumat tambahan mengenai program kepada penyusun tetapi bukan merupakan sebahagian daripada program itu sendiri. Anotasi ini tidak mempengaruhi pelaksanaan program yang disusun.

Anotasi bermula dengan @. Sintaksnya adalah:

 @AnnotasiNama 

Mari kita ambil contoh @Overrideanotasi.

Yang @Overridedinyatakan oleh anotasi yang kaedah yang telah ditandakan dengan anotasi ini mengatasi kaedah superclass dengan nama yang sama kaedah, jenis pulangan, dan senarai parameter.

Tidak wajib digunakan @Overrideketika mengesampingkan kaedah. Namun, jika kita menggunakannya, pengkompil memberikan kesalahan jika ada yang tidak betul (seperti jenis parameter yang salah) semasa mengesampingkan kaedah.

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(); ) ) 

Pengeluaran

 Saya adalah anjing. 

Dalam contoh ini, kaedah displayInfo()ini terdapat pada Dog superclass dan subclass Dog. Apabila kaedah ini dipanggil, kaedah subkelas dipanggil dan bukan kaedah dalam superclass.

Format anotasi

Anotasi mungkin juga merangkumi elemen (anggota / atribut / parameter).

1. Anotasi Penanda

Anotasi penanda tidak mengandungi ahli / elemen. Ia hanya digunakan untuk menandakan deklarasi.

Sintaksnya adalah:

 @AnnotationName () 

Oleh kerana anotasi ini tidak mengandungi unsur, tanda kurung dapat dikecualikan. Sebagai contoh,

 @Selamat 

2. Anotasi elemen tunggal

Anotasi elemen tunggal mengandungi hanya satu elemen.

Sintaksnya adalah:

 @AnnotationName (elementName = "elementValue") 

Sekiranya hanya ada satu elemen, adalah konvensyen untuk menamakan elemen itu sebagai nilai.

 @AnnotationName (nilai = "elementValue") 

Dalam kes ini, nama elemen juga boleh dikecualikan. Nama elemen akan menjadi nilai secara lalai.

 @AnnotationName ("elementValue") 

3. Anotasi pelbagai elemen

Anotasi ini mengandungi pelbagai elemen yang dipisahkan dengan koma.

Sintaksnya adalah:

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

Penempatan anotasi

Sebarang perisytiharan boleh ditandakan dengan anotasi dengan meletakkannya di atas pernyataan tersebut. Pada Java 8, anotasi juga dapat diletakkan sebelum jenis.

1. Pernyataan di atas

Seperti disebutkan di atas, anotasi 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(); ) ) 

Pengeluaran

 Senarai perkataan => (programiz) 

Sekiranya program di atas disusun tanpa menggunakan @SuppressWarnings("unchecked")anotasi, penyusun tetap akan menyusun program tetapi akan memberi amaran seperti:

Main.java menggunakan operasi yang tidak diperiksa atau tidak selamat. Senarai perkataan => (programiz)

Kami mendapat amaran

 Main.java menggunakan operasi yang tidak diperiksa atau tidak selamat 

kerana penyataan 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.
  • Arahan waktu jalan - Beberapa anotasi dapat ditentukan untuk memberi arahan kepada program pada waktu berjalan. Anotasi ini diakses menggunakan Java Reflection.

Artikel menarik...