Anotasi Java sederhana
Hanya ada tiga jenis anotasi sederhana yang disediakan oleh JDK5. Ketiganya digunakan untuk mencegah kesalahan atau memberikan pengingat, yaitu:
1. Timpa
2. Tidak berlaku lagi
3.Menekan peringatan
Penting untuk dicatat bahwa JDK5 (istilah lain, Tiger) sebenarnya tidak memiliki banyak anotasi bawaan; sebaliknya, JDK5 memungkinkan inti Java untuk mendukung kemampuan fitur anotasi. Hal ini secara tegas dinyatakan dalam JSR-175 yang biasa digunakan mendefinisikan fungsi metadata. Jenis anotasi khusus perlu ditulis oleh pemrogram, standar JSR lainnya juga telah menulis serangkaian jenis anotasi standar. Berikut ini akan menggunakan contoh untuk menjelaskan ketiga anotasi sederhana ini secara mendalam.
Ganti anotasi
Anotasi Override menunjukkan bahwa metode yang diberi anotasi perlu mengganti metode di kelas super.
Jika suatu metode menggunakan anotasi ini tetapi tidak mengesampingkan metode di superkelas (misalnya, kapitalisasi salah, atau parameter salah, atau metode ditentukan oleh subkelas itu sendiri), kompiler akan menghasilkan kesalahan.
(Catatan: Anotasi override tidak dapat digunakan di JRE5 saat mengimplementasikan metode di antarmuka. JRE6 mengizinkannya. Sering kali JRE5 akan melaporkan kesalahan ini).
Contoh 1 menunjukkan anotasi utama:
Contoh anotasi Java 1:
Copy kode kodenya sebagai berikut:
kelas publik Test_Override {
@Mengesampingkan
String publik keString() {
return super.toString() + "Uji menggunakan anotasi 'Override'";
}
}
Apa yang terjadi jika nama metode salah eja? Misalnya, jika Anda mengganti nama metode toString menjadi "tostring" (huruf kecil semua), Anda akan mendapatkan pesan kesalahan seperti berikut saat kompilasi:
Copy kode kodenya sebagai berikut:
Kompilasi 1 file sumber ke D:tempNew Folder (2)
Kelas TestJavaApplication1build
D:tempFolder Baru (2)TestJavaApplication1srctest
myannotationTest_Override.java:24: metode tidak diganti
sebuah metode dari superkelasnya
@Mengesampingkan
1 kesalahan
BUILD GAGAL (total waktu: 0 detik)
Tentu saja, Eclipse akan langsung melaporkan tanda silang merah. Sekarang IDE menjadi sangat mudah digunakan, pemula tidak boleh main-main dengan baris perintah JDK.
Anotasi tidak digunakan lagi
Anotasi ini menunjukkan bahwa kompiler harus menampilkan pesan peringatan jika program memanggil elemen yang tidak digunakan lagi (Usang, usang, usang). Contoh 2 menunjukkan cara menggunakan anotasi yang tidak digunakan lagi.
Contoh anotasi Java 2
Pertama, buat kelas dan tandai metode sebagai tidak digunakan lagi seperti ini:
Copy kode kodenya sebagai berikut:
kelas publik Test_Tidak berlaku lagi {
@Tidak digunakan lagi
kekosongan publik melakukan Sesuatu() {
System.out.println("Uji menggunakan anotasi yang tidak berlaku lagi: 'Tidak berlaku lagi'");
}
}
Berikutnya, coba panggil metode ini dari kelas lain:
Copy kode kodenya sebagai berikut:
TestAnnotations kelas publik {
public static void main(String arg[]) memunculkan Pengecualian {
TestAnnotations baru();
}
TestAnnotations publik() {
Test_Deprecated t2=Tes_Deprecatedbaru();
t2.melakukan Sesuatu();
}
Metode doSomething() dalam contoh ini dinyatakan sebagai metode yang tidak digunakan lagi. Oleh karena itu, metode ini tidak boleh dipanggil dalam keadaan normal. Tidak akan ada pesan peringatan saat mengkompilasi file Test_Deprecated.java, tetapi saat mengkompilasi TestAnnotations.java, kompiler Pesan peringatan serupa dengan ini akan diberikan (Eclipse akan memperingatkan):
Copy kode kodenya sebagai berikut:
Kompilasi 1 file sumber ke D:tempNew Folder
(2) Kelas build TestJavaApplication1
D:tempFolder Baru
(2) TestJavaApplication1srctestmyannotation
TestAnnotations.java:27:
peringatan: [penghentian] doSomething() masuk
test.myannotation.Test_Deprecated sudah tidak digunakan lagi
t2.melakukan Sesuatu();
1 peringatan
Menekan anotasi peringatan
Anotasi ini memberi tahu kompiler bahwa pesan peringatan untuk elemen yang dianotasi dan semua sub-elemen harus disembunyikan. Semua pesan peringatan untuk sekumpulan elemen dan sub-elemen akan disembunyikan menyembunyikan peringatan. Jika Anda menggunakan anotasi Suppresswarnings pada satu metode untuk menyembunyikan peringatan lainnya, kedua peringatan tersebut akan disembunyikan di tingkat metode.
Contoh anotasi Java 3:
Copy kode kodenya sebagai berikut:
TestAnnotations kelas publik {
public static void main(String arg[]) memunculkan Pengecualian {
TestAnnotations baru().doSomeTestNow();
}
@SuppressWarnings({"penghentian"})
kekosongan publik doSomeTestNow() {
Test_Deprecated t2 = Test_Deprecated baru();
t2.melakukan Sesuatu();
}
}
Dalam contoh ini, @SuppressWarnings digunakan untuk menyembunyikan pesan peringatan penghentian yang ditunjukkan pada Contoh 2. Karena jenis peringatan untuk metode ini disembunyikan, Anda tidak akan lagi melihat peringatan "penghentian".
Catatan: Lebih baik menggunakan anotasi ini pada elemen terdalam. Oleh karena itu, jika Anda hanya ingin menyembunyikan peringatan pada metode tertentu, Anda harus memberi anotasi pada metode tersebut daripada menggunakan anotasi pada kelas.
Meta-Anotasi (tipe anotasi Java)
Meta-anotasi, sebenarnya disebut anotasi, mencakup empat jenis, yaitu:
1. Sasaran
2.Retensi
3. Terdokumentasi
4. Warisan
Anotasi target
Anotasi Target menunjukkan elemen target mana yang menerapkan jenis anotasi. Anotasi ini berisi nilai jenis enumerasi berikut:
1.@Target(ElementType.TYPE)--dapat diterapkan ke elemen kelas mana pun
2.@Target(ElementType.FIELD) - hanya berlaku untuk bidang atau properti
3.@Target(ElementType.METHOD)--hanya berlaku untuk anotasi metode
4.@Target(ElementType.PARAMETER) - hanya berlaku untuk parameter metode
5.@Target(ElementType.CONSTRUCTOR)--hanya berlaku untuk konstruktor
6.@Target(ElementType.LOCAL_VARIABLE)--hanya berlaku untuk variabel lokal
7.@Target(ElementType.ANNOTATION_TYPE)—Menunjukkan bahwa tipe yang dideklarasikan itu sendiri adalah tipe anotasi
Contoh 4 menunjukkan anotasi Target:
Contoh anotasi Java 4
Pertama, jenis anotasi bernama Test_Target didefinisikan, dengan meta-anotasi @Target, seperti yang ditunjukkan di bawah ini:
Copy kode kodenya sebagai berikut:
@Target(ElementType.METHOD)
publik @interface Test_Target {
String publik doTestTarget();
}
Selanjutnya, buat kelas yang akan diberi anotasi Test_Target:
Copy kode kodenya sebagai berikut:
TestAnnotations kelas publik {
public static void main(String arg[]) {
TestAnnotations().doTestTarget();
}
// Gunakan anotasi pada metode, oke.
// Tidak boleh ada jeda baris di tengah, 2 baris, dst. Java mengabaikan jeda baris yang berlebihan.
@Test_Target(doTestTarget="Halo Dunia!")
kekosongan publik doTestTarget() {
System.out.printf("Menguji Anotasi Target");
}
}
Anotasi @Target(ElementType.METHOD) menunjukkan bahwa jenis anotasi hanya dapat digunakan untuk memberi anotasi pada metode. Jika Anda mengkompilasi kode ini, tidak ada pesan peringatan yang akan ditampilkan. Namun, apa yang akan terjadi jika anotasi ini dideklarasikan pada variabel string? Apa? Seperti ini:
Copy kode kodenya sebagai berikut:
TestAnnotations kelas publik {
// Ini adalah pendekatan yang salah, dan kompilasi tidak akan berhasil karena anotasi berada pada level yang salah.
// Anotasi meta menunjukkan bahwa hanya metode yang dapat diberi anotasi, dan metode tersebut tidak dapat digunakan untuk memberi anotasi pada properti.
@Test_Target(doTestTarget="Halo Dunia!")
String pribadi str;
public static void main(String arg[]) {
TestAnnotations().doTestTarget();
}
kekosongan publik doTestTarget() {
System.out.printf("Menguji Anotasi Target");
}
}
Satu-satunya perubahan adalah deklarasi anotasi berpindah dari tingkat metode ke tingkat bidang, yang tidak benar. Karena Anda telah menetapkan anotasi @Test_Target hanya berlaku di tingkat metode, jika Anda mencoba mengkompilasi kelas ini, Anda mungkin mendapatkan kesalahan pesan seperti ini:
Copy kode kodenya sebagai berikut:
"TestAnnotations.java":
D:R_AND_DTestAnnotationsrctestmyannotation
TestAnnotations.java:16:
jenis anotasi tidak berlaku untuk deklarasi semacam ini pada baris
16, kolom 0
@Test_Target(doTestTarget="Halo Dunia!")
^
Kesalahan dalam kompilasi javac