Mendefinisikan Anotasi: Elemen dan Nilai Bawaan
Buat anotasi kustom dengan @interface, definisikan elemen dengan nilai bawaan, dan terapkan meta-anotasi.
Mendefinisikan Anotasi: Elemen dan Nilai Bawaan adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.
Apa Itu Anotasi?
Anotasi adalah metadata yang diterapkan pada kelas, metode, anggota data, atau parameter. Anotasi tidak secara langsung mengubah perilaku—anotasi menyediakan informasi bagi kompilator, kerangka kerja, atau pemroses saat waktu proses.
Mendeklarasikan Anotasi dengan @interface
Gunakan @interface untuk mendeklarasikan anotasi khusus. Elemennya tampak seperti metode. Nilai bawaan ditentukan dengan default.
@interface Retry {
int times() default 3;
long delayMs() default 1000L;
Class<? extends Throwable>[] on() default {Exception.class};
}Menerapkan Anotasi
Terapkan anotasi pada sasarannya. Abaikan elemen yang memiliki nilai bawaan. Jika hanya satu elemen yang bernama value, elemen tersebut dapat diatur tanpa menyertakan kuncinya.
@Retry(times = 5, delayMs = 500)
public void callExternalService() { ... }
// Single-element shorthand:
@interface Label { String value(); }
@Label("production")
public class App {}Jenis Elemen Anotasi
Elemen hanya dapat berupa: tipe primitif (int, long, dan sebagainya), String, Class, sebuah enum, jenis anotasi lain, atau array satu dimensi dari salah satu jenis tersebut.
@interface Config {
String host();
int port() default 8080;
LogLevel level() default LogLevel.INFO; // enum
Class<?> handler() default DefaultHandler.class;
String[] tags() default {};
}Anotasi Meta: @Retention
@Retention mengatur berapa lama anotasi dipertahankan: SOURCE (dibuang oleh kompilator), CLASS (disimpan dalam .class, tetapi tidak tersedia saat waktu proses), RUNTIME (dapat dibaca melalui refleksi).
@Retention(RetentionPolicy.RUNTIME)
@interface Retry {
int times() default 3;
}Anotasi Meta: @Target
@Target membatasi tempat anotasi dapat diterapkan. Beberapa sasaran dapat dicantumkan.
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface Audited {
String description() default "";
}@Documented dan @Inherited
@Documented menyertakan anotasi dalam Javadoc. @Inherited memungkinkan subkelas mewarisi anotasi dari superkelasnya (hanya untuk anotasi tingkat kelas).
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface Category {
String value();
}Anotasi @Repeatable
Tandai anotasi dengan @Repeatable agar anotasi tersebut dapat muncul beberapa kali pada elemen yang sama. Sediakan anotasi wadah yang menyimpan sebuah array.
@Repeatable(Tags.class)
@interface Tag { String value(); }
@interface Tags { Tag[] value(); }
@Tag("fast")
@Tag("stable")
public class Service {}Nilai Bawaan dan Pengabaian Elemen
Elemen dengan nilai default tidak perlu ditentukan di lokasi pemanggilan. Elemen tanpa nilai bawaan bersifat wajib.
@Retry // uses defaults: times=3, delayMs=1000
public void action1() {}
@Retry(times=1) // overrides only times; delayMs stays 1000
public void action2() {}Anotasi vs Antarmuka Penanda
Antarmuka penanda (seperti Serializable) diperiksa dengan instanceof dan menyampaikan informasi tipe. Anotasi lebih fleksibel—anotasi membawa metadata dan dapat memiliki elemen.
Anotasi Bawaan yang Umum
Kenali anotasi JDK berikut: @Override, @Deprecated, @FunctionalInterface, @SuppressWarnings, dan @SafeVarargs.
@Override
public String toString() { return "User{" + name + "}"; }
@Deprecated(since = "2.0", forRemoval = true)
public void oldMethod() {}Pemeriksaan Singkat
Kebijakan retensi apa satu-satunya yang membuat anotasi dapat dibaca saat waktu proses?
Rangkuman
Deklarasikan anotasi dengan @interface. Gunakan @Retention(RUNTIME) untuk pemrosesan reflektif, @Target untuk membatasi penggunaan, dan default untuk elemen opsional. @Repeatable memungkinkan penumpukan anotasi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mendefinisikan Anotasi: Elemen dan Nilai Bawaan” gratis?
Ya — teks lengkap “Mendefinisikan Anotasi: Elemen dan Nilai Bawaan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mendefinisikan Anotasi: Elemen dan Nilai Bawaan”?
Buat anotasi kustom dengan @interface, definisikan elemen dengan nilai bawaan, dan terapkan meta-anotasi. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Mendefinisikan Anotasi: Elemen dan Nilai Bawaan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mendefinisikan Anotasi: Elemen dan Nilai Bawaan
- Kebijakan Retensi dan Tipe Target
- Pemrosesan Anotasi saat Runtime
- Pemroses Anotasi saat Kompilasi