Tinjauan Komentar Java:
1. Anotasi untuk kompiler untuk dilihat, yang berbeda dari anotasi
2. Tiga Anotasi Dasar:
@Override memberi tahu kompiler bahwa ini mengesampingkan metode
@Deprecated Katakan pada kompiler bahwa metode ini sudah ketinggalan zaman
@SuppressWarnings ("Uncecked") jangan peringatkan
= (value = {"uncecked"})
3. Anotasi dapat digunakan untuk menggantikan file konfigurasi tradisional
4. Mulai dari JDK5, Java telah menambahkan dukungan untuk metadata (metadata), yaitu anotasi.
Anotasi khusus dan anotasi refleksi
Anotasi Kustom:
1. Buat anotasi baru: (Hanya satu simbol @ lagi dari definisi antarmuka)
Salinan kode adalah sebagai berikut:
publik @interface myannotation {
//milik
String who ();
int usia ();
Gender string ();
}
2. Atur anotasi dengan nilai default
Salinan kode adalah sebagai berikut:
public @interface youNotation {
String who () default "tom";
int usia () default 0;
String gender () default "wanita";
}
3. Situasi Array
Salinan kode adalah sebagai berikut:
public @interface merekanotation {
String [] value (); // harus memiliki ()
}
Metaannotasi / Metaannotasi
Digunakan untuk memodifikasi anotasi. (Anda dapat melihat kode sumber @Override)
Kebijakan Anotasi @Retention, digunakan untuk menentukan domain yang dapat dipertahankan oleh anotasi
Retensipolicy.class
Ada di level bytecode, tetapi tidak terlihat pada level run (default)
Retensipolicy.runtime
Ketiga level itu terlihat dan dapat direfleksikan selama runtime
RetentionPolicy. Sumber hanya tersedia di tingkat kode sumber dan tidak terlihat pada level bytecode.
@Target Menentukan ruang lingkup anotasi yang digunakan
@Documented menulis ke dokumen.
@Inherite warisan, subclass yang mewarisi kelas ini masih memiliki karakteristik kelas induk sebagai anotasi.
Ex.
Anotasi definisi adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
// Biarkan anotasi tercermin saat runtime
@Retention (retentionpolicy.runtime)
public @interface dbinfo {
String driver () default "com.mysql.jdbc.driver";
String url () default "url = jdbc: mysql: // localhost: 3306/akademik";
String password () default "1234";
String username () default "root";
}
Injeksi Refleksi:
Salinan kode adalah sebagai berikut:
@Dbinfo
Koneksi statis publik getConnection () melempar Exception {
// Dapatkan bytecode kelas ini
Kelas clazz = demo2.class;
// Dapatkan metode publik bernama getConnection () di kelas ini
// Parameter 1: Metode Nama
// Parameter 2: Objek bytecode yang sesuai dengan parameter tipe metode
Metode metode = clazz.getMethod ("getConnection", null);
// Melalui metode ini, dapatkan anotasi yang ditentukan pada metode
Dbinfo dbinfo = method.getannotation (dbinfo.class);
Driver string = dbinfo.driver ();
String url = dbinfo.url ();
String user = dbinfo.username ();
Kata sandi string = dbinfo.password ();
Class.forname (driver);
return driverManager.getConnection (url, pengguna, kata sandi);
}