"Hai, Amigo!"

"Hello, Rishi."

"Hari ini saya akan memberi anda pengenalan yang lebih mendalam tentang anotasi."

"Seperti yang anda mungkin sedia maklum, anotasi ialah perkataan khas yang boleh diletakkan di sebelah kelas, medan, kaedah dan pembolehubah."

"Ya. Saya sangat kerap bertemu dengan mereka."

"Kadangkala ia juga dipanggil metadata . Tujuan utamanya ialah untuk menyimpan maklumat tambahan khusus tentang kaedah, medan dan kelas."

"Untuk siapa mereka menyimpannya?"

"Itu soalan yang sangat bagus."

"Orang ramai menulis anotasi, yang bermaksud seseorang mesti memerlukannya."

"Anotasi membolehkan anda menyimpan maklumat tambahan tentang kod dan elemen program, tetapi, secara rasmi, ia bukan sebahagian daripada kod."

"Anotasi boleh digunakan untuk menjana XML, menentukan sama ada kaedah ditamatkan, mengesan pepijat, dll."

"Berikut ialah contoh anotasi dalam kod:"

Contoh
@CatInfo(manager=Catmanager.class, unique=true)
class Cat
{
 @Name("Missy")
 private String name;

 @SuppressWarnings(value = "unchecked")
 void getUniqueCatName()
 {

 }
}

"Seperti yang anda lihat, data boleh disimpan dalam anotasi."

"Jika anotasi hanya mempunyai satu medan yang dipanggil value , maka nama medan boleh ditinggalkan:"

Contoh
@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

"Jika tiada parameter di dalam kurungan, maka parameter tersebut juga boleh diabaikan:"

Contoh
@Override
void getUniqueCatName()
{

}

"Amat mudah untuk membuat anotasi anda sendiri. Mengisytiharkan anotasi hampir sama dengan mengisytiharkan antara muka."

Contoh
@interface CatManager
{
 Class manager();
 boolean unique();
 String name() default "Unknown Cat";
}

"Hanya terdapat beberapa perbezaan."

"Mula-mula, anda meletakkan tanda «@» sebelum antara muka perkataan ."

"Kedua, anotasi boleh mempunyai nilai lalai. Anda menggunakan perkataan lalai untuk menetapkan nilai lalai . Lihat contoh di atas. Parameter ini adalah pilihan dan boleh ditinggalkan apabila menambahkan anotasi."

"Ah. Semuanya lebih mudah daripada yang saya sangka. Dan saya telah mengelak mereka seperti Robo-Devil mengelakkan air suci. Ia tidak begitu menyenangkan apabila kod mempunyai banyak perkara yang anda tidak faham sepenuhnya."

"Oh, baguslah awak ingatkan saya — saya ingin memberitahu anda lebih lanjut tentang anotasi yang digunakan oleh pengkompil."

"Hanya ada 3 anotasi seperti itu. Nah, tiga setakat ini."

@Ditamatkan.

"Anda boleh menganotasi kelas atau kaedah dengan @Deprecated. Ini akan menyebabkan pengkompil mengeluarkan amaran (amaran bukan ralat), dan IntelliJ IDEA akan memaparkan kaedah ini sebagai teks coretan. Sesuatu seperti ini  :

Contoh
Date date = new Date();
int year = date.getYear();

@Override.

"Ia dianggap sebagai amalan terbaik untuk menambahkan anotasi @Override pada kaedah yang anda tolak."

"Untuk apa itu? Bukankah IDEA sudah menunjukkan sama ada sesuatu kaedah itu ditindih atau tidak?"

"Mula-mula, ada IDEA dan kemudian ada sintaks Java."

"Dan kedua, secara hipotesis, anda boleh mengalami situasi di mana kaedah kelas asas dinamakan semula tanpa perubahan yang sepadan dengan nama kaedah dalam subkelas. Program ini tidak akan berfungsi seperti yang diharapkan, tetapi tiada siapa yang akan menyedarinya. Anotasi ini dicipta untuk mengelakkan situasi ini daripada berlaku:"

Contoh
@Override
void getUniqueCatName()
{

}

@SuppressWarnings.

"Kadangkala pengkompil memaparkan banyak amaran. Dan kadangkala kami tahu tentang «masalah» dan sengaja memilih untuk menggunakan kod sepadan yang menciptanya. Anda boleh menggunakan anotasi ini untuk menyembunyikan beberapa amaran ini."

"Seorang pengaturcara boleh menggunakan anotasi @SuppressWarnings untuk memberitahu pengkompil, «Jangan tunjukkan amaran untuk ralat ini — ia disengajakan." Sebagai contoh:"

Contoh
@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

"Faham."

"Saya semakin penat. Saya akan membasahkan tekak saya yang kering. Kita sambung selepas rehat, OK?"

"Tentu."