1. Ikhtisar
Anotasi dapat didefinisikan pada metode.
Anotasi yang umum digunakan:
@Override: berarti metode untuk kembali kelas orang tua,
Ini juga dapat menentukan apakah metode kelas induk ditimpa. Metode kelas induk yang ditimpa.
@SuppressWarnings ("Deprecation"): Batalkan peringatan kompiler (misalnya, metode yang Anda gunakan sudah ketinggalan zaman)
@Deprecated: Pernyataan ini juga ditempatkan di bagian atas metode, menunjukkan bahwa metode ini sudah ketinggalan zaman, atau digunakan di kelas
Salinan kode adalah sebagai berikut:
impor java.util.arraylist;
impor java.util.list;
AnnotationDemo kelas publik {
/*
* Untuk koleksi, jika tidak ada jenis penyimpanan yang ditentukan, akan ada peringatan keamanan.
* Jika Anda tidak ingin meminta peringatan keamanan, maka tambahkan @SuppressWarnings (parameter) ke kelas atau metode.
*/
@SuppressWarnings ("Uncecked")
public static void main (string [] args) {
Daftar Daftar = ArrayList baru ();
}
}
2. Anotasi khusus
1. Format
Izin @Interface nama anotasi {}
melangkah:
Tentukan kelas anotasi ---> Tentukan kelas kelas anotasi aplikasi ---> kelas yang mencerminkan kelas kelas anotasi aplikasi (kelas ini dapat didefinisikan secara terpisah atau diuji di kelas anotasi aplikasi)
Salinan kode adalah sebagai berikut:
impor java.lang.annotation.Retention;
imporJava.lang.annotation.RetentionPolicy;
// Tentukan anotasi ini untuk disimpan dalam bytecode
@Retention (retentionpolicy.runtime)
publik @interface myannotation {
}
@Myannotation
// kelas anotasi yang ditentukan aplikasi
kelas publik applymyannotation {
public static void main (string [] args) {
if (applymyannotation.class.isannotationPresent (myannotation.class)) {// Tentukan apakah ada kelas anotasi yang ditentukan di kelas ini
Anotasi myannotation = (myannotation) applymyannotation.class
.getannotation (myannotation.class);
System.out.println (anotasi);
}
}
}
2. Siklus deklarasi
Format: Misalnya: @retention (retentionpolicy.class)
Tentukan siklus pada kelas anotasi khusus, @retention (tipe parameter) Jenis parameter adalah retensipolicy
RetentionPolicy.class: Pada file kelas, mesin virtual tidak mempertahankan anotasi selama runtime
RetentionPolicy.runtime: Pada file kelas, komentar virtual dipertahankan selama runtime.
RetentionPolicy.Source: Pada file sumber, buang anotasi
Suppresswarnings dan override adalah retensipolicy.source,
Tercerahkan adalah retensipolicy.
Standarnya adalah retensipolicy.class:
3. Tentukan target
Format: Misalnya: Metode @Target (elementType.method)
Anggota apa yang dapat dijelaskan oleh anotasi yang ditentukan. Jika anotasi ini tidak dinyatakan, itu dapat ditempatkan pada elemen program apa pun.
Ini bisa berupa paket, antarmuka, parameter, metode, variabel lokal, bidang, dll.
Salinan kode adalah sebagai berikut:
// Tentukan anotasi ini untuk disimpan dalam bytecode
@Retention (retentionpolicy.runtime)
@Target ({elementType.method, elementType.type}) // dapat didefinisikan pada metode dan kelas untuk mewakili tipe
publik @interface myannotation {
}
@Myannotation
// kelas anotasi yang ditentukan aplikasi
kelas publik applymyannotation {
@Myannotation // didefinisikan pada metode
public static void main (string [] args) {
if (applymyannotation.class.isannotationPresent (myannotation.class)) {// Tentukan apakah ada kelas anotasi yang ditentukan di kelas ini
Anotasi myannotation = (myannotation) applymyannotation.class
.getannotation (myannotation.class);
System.out.println (anotasi);
}
}
}
3. Tambahkan atribut ke anotasi
1. Jenis
Pengaturan atribut anotasi dapat: 8 tipe data dasar, string, enumerasi, anotasi, kelas, tipe array,
2. Perhatikan
Jika hanya ada satu atribut dalam anotasi atau hanya satu atribut yang perlu ditetapkan, maka dapat ditulis secara langsung ketika dipanggil tanpa menentukan nama atribut.
Ketika atribut beranotasi adalah jenis array dan hanya satu nilai yang ditetapkan saat menetapkan, {} dapat dihilangkan.
3. Contoh
3.1.Attribute Tipe (adalah string)
Salinan kode adalah sebagai berikut:
impor java.lang.annotation.elementType;
impor java.lang.annotation.Retention;
impor java.lang.annotation.RetentionPolicy;
impor java.lang.annotation.*;
// Tentukan anotasi ini untuk disimpan dalam bytecode
@Retention (retentionpolicy.runtime)
publik @interface myannotation {
Nilai string ();
String color () default "red"; // atur nilai default adalah "merah"
}
@Myannotation ("java")
kelas publik applymyannotation {
public static void main (string [] args) {
/**
* Ini untuk mendapatkan anotasi di kelas, dan Anda juga dapat memperoleh anotasi pada metode ini.
*/
if (applymyannotation.class.isannotationPresent (myannotation.class)) {// Tentukan apakah ada kelas anotasi yang ditentukan di kelas ini
Anotasi myannotation = (myannotation) applymyannotation.class
.getannotation (myannotation.class);
System.out.println ("value ="+annotation.Value ());
System.out.println ("color ="+annotation.color ());
}
}
}
hasil:
nilai = java
Warna = merah
Dari program panggilan, juga dapat dilihat bahwa jika hanya satu atribut yang dapat ditetapkan, nama atribut dapat dihilangkan. Kalau tidak, kelas anotasi (name atribut = nilai)
3.2
Salinan kode adalah sebagai berikut:
/*Kelas enum*/
Publik Enum Week {
Sun, Senin;
}
/**
* Kelas Anotasi
*/
public @interface annotationText {
Nilai string ();
}
impor java.lang.annotation.elementType;
impor java.lang.annotation.Retention;
impor java.lang.annotation.RetentionPolicy;
impor java.lang.annotation.*;
// Tentukan anotasi ini untuk disimpan dalam bytecode
@Retention (retentionpolicy.runtime)
publik @interface myannotation {
Nilai string ();
String color () default "red"; // atur nilai default adalah "merah"
Minggu Minggu () Default Week.mon; // Enum Tipe
int [] array () default {1,2,3}; // tipe array
annotationText annotation () default @AnnotationText ("my");
Class classDemo () Default integer.class; // jenis kelas
}
@Myannotation (value = "java", color = "green", week = week.sun, array = 5, annotation =@annotationText ("you"), classDemo = string.class) // array = {4,5, 6}
kelas publik applymyannotation {
public static void main (string [] args) {
/**
* Ini untuk mendapatkan anotasi di kelas, dan Anda juga dapat memperoleh anotasi pada metode ini.
*/
if (applymyannotation.class.isannotationPresent (myannotation.class)) {// Tentukan apakah ada kelas anotasi yang ditentukan di kelas ini
Anotasi myannotation = (myannotation) applymyannotation.class
.getannotation (myannotation.class);
System.out.println ("value ="+annotation.Value ());
System.out.println ("color ="+annotation.color ());
System.out.println ("minggu ="+annotation.week ());
System.out.println ("Panjang array ="+annotation.array (). Panjang);
System.out.println ("Nilai Jenis Anotasi ="+Annotation.Annotation (). Value ());
System.out.println ("Nilai Tipe Kelas ="+Annotation.ClassDemo ());
}
}
}
hasil:
Salinan kode adalah sebagai berikut:
nilai = java
Warna = hijau
Minggu = Matahari
Panjang array = 1
Nilai tipe anotasi = Anda
Nilai jenis kelas = classJava.lang.string
4. Anotasi pada metode
Salinan kode adalah sebagai berikut:
imporjava.lang.annotation.Retention;
imporJava.lang.annotation.RetentionPolicy;
/**
*Kelas Anotasi
*/
@Retention (retentionpolicy.runtime)
public @interface annotationText {
StringValue ();
}
publicclassapplymyannotation {
publicstaticvoidMain (string [] args) throwsexception {
MethodMethodShow = applyMyannotation.class.getMethod ("show");
annotationTextanno = MethodShow.getAnnotation (annotationText.class);
System.out.println (anno.value ());
}
@AnnotationText ("java")
publicVoidShow () {
System.out.println ("Hello");
}
}
Hasil: Java