Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Jenis Anotasi Java: Panduan Lengkap tentang Anotasi Terdefinisi, Kustom, dan Meta

Jenis Anotasi Java

Tutorial ini mencakup anotasi Java—terdefinisi, kustom, dan meta-anotasi—dengan contoh yang jelas.

Anotasi Java adalah metadata yang menjelaskan elemen dalam kode sumber Anda. Platform Java SE menyediakan serangkaian anotasi standar, dan pengembang dapat membuat anotasi kustom yang disesuaikan dengan proyek mereka. Anotasi juga dapat diannotasi sendiri, membentuk yang dikenal sebagai meta-anotasi.

Anotasi terbagi menjadi tiga kategori:

  1. Predefined annotations – bawaan platform Java.
  2. Custom annotations – ditentukan pengguna untuk kebutuhan spesifik.
  3. Meta-annotations – anotasi yang diterapkan pada anotasi lain.

Jenis Anotasi Terdefinisi Sebelumnya

1. @Deprecated

Anotasi @Deprecated menandai bahwa sebuah kelas, metode, field, atau elemen lain sudah usang dan memiliki alternatif yang lebih baru. Kompiler akan mengeluarkan peringatan setiap kali elemen yang usang digunakan.

Sintaks:

@Deprecated public void oldMethod() { ... }

Javadoc menyediakan tag @deprecated untuk dokumentasi:

/** * @deprecated * Use {@link #newMethod()} instead. */ @Deprecated public void oldMethod() { ... }

Contoh

class Main { /** * @deprecated * Metode ini usang dan telah digantikan oleh newMethod() */ @Deprecated public static void deprecatedMethod() { System.out.println("Metode usang"); } public static void main(String[] args) { deprecatedMethod(); } }

Output

Metode usang

2. @Override

Anotasi @Override menunjukkan bahwa sebuah metode dimaksudkan untuk meng-override metode dari superclass atau antarmuka. Meskipun tidak wajib, ia menangkap kesalahan seperti tanda tangan yang tidak cocok pada waktu kompilasi.

Contoh

class Animal { public void display() { System.out.println("Saya adalah seekor hewan"); } } class Dog extends Animal { @Override public void display() { System.out.println("Saya adalah seekor anjing"); } public void printMessage() { display(); } } class Main { public static void main(String[] args) { Dog dog1 = new Dog(); dog1.printMessage(); } }

Output

Saya adalah seekor anjing

3. @SuppressWarnings

Anotasi ini menginstruksikan kompiler untuk mengabaikan kategori peringatan tertentu. Kategori umum meliputi deprecation dan unchecked.

Penggunaan:

@SuppressWarnings("deprecation")

Beberapa kategori:

@SuppressWarnings({"deprecation", "unchecked"})

Contoh

class Main { @Deprecated public static void deprecatedMethod() { System.out.println("Metode usang"); } @SuppressWarnings("deprecation") public static void main(String[] args) { Main depObj = new Main(); depObj.deprecatedMethod(); } }

Output

Metode usang

4. @SafeVarargs

Diterapkan pada metode final, static, atau private dan konstruktor, @SafeVarargs menyatakan bahwa metode tidak melakukan operasi yang tidak aman pada parameter varargsnya. Ini menghapus peringatan unchecked terkait varargs.

Contoh

import java.util.*; class Main { @SafeVarargs private static void displayList(List<String>... lists) { for (List<String> list : lists) { System.out.println(list); } } public static void main(String[] args) { List<String> universityList = Arrays.asList("Tribhuvan University", "Kathmandu University"); List<String> programmingLanguages = Arrays.asList("Java", "C"); displayList(universityList, programmingLanguages); } }

Output

[Tribhuvan University, Kathmandu University] [Java, C]

5. @FunctionalInterface

Diperkenalkan di Java 8, anotasi ini menunjuk sebuah antarmuka sebagai antarmuka fungsional—sebuah antarmuka dengan satu metode abstrak. Kompiler memverifikasi keterbatasan ini.

Contoh

@FunctionalInterface public interface MyFuncInterface { void firstMethod(); // abstract }

Menambahkan metode abstrak kedua memicu kesalahan kompilasi:

@FunctionalInterface public interface MyFuncInterface { void firstMethod(); void secondMethod(); // compile-time error }

Beberapa metode default atau static diizinkan.

@FunctionalInterface public interface MyFuncInterface { void firstMethod(); default void secondMethod() { /* ... */ } default void thirdMethod() { /* ... */ } }

Anotasi Kustom

Pengembang dapat membuat anotasi yang sesuai dengan kebutuhan spesifik aplikasi. Sintaks menggunakan @interface dan dapat mencakup metode elemen dengan nilai default opsional.

Sintaks

@interface AnnotationName { ElementType elementName() default defaultValue; }

Contoh

@interface MyCustomAnnotation { String value() default "default value"; } class Main { @MyCustomAnnotation(value = "programiz") public void method1() { System.out.println("Test method 1"); } public static void main(String[] args) { new Main().method1(); } }

Output

Test method 1

Meta Anotasi

Meta-anotasi mengonfigurasi bagaimana anotasi lain berperilaku.

1. @Retention

Mendefinisikan lingkup visibilitas anotasi: SOURCE, CLASS, atau RUNTIME.

@Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { }

2. @Documented

Memastikan anotasi muncul dalam Javadoc yang dihasilkan.

@Documented public @interface MyAnnotation { }

3. @Target

Membatasi anotasi ke elemen program tertentu.

@Target(ElementType.METHOD) public @interface MyAnnotation { }

Tipe elemen termasuk ANNOTATION_TYPE, CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE.

4. @Inherited

Mengizinkan subclass untuk mewarisi anotasi yang ada pada superclass.

@Inherited public @interface MyAnnotation { }

5. @Repeatable

Mengizinkan anotasi diterapkan beberapa kali pada elemen yang sama. Memerlukan anotasi wadah.

@Repeatable(Universities.class) public @interface University { String name(); } public @interface Universities { University[] value(); }

Penggunaan:

@University(name = "TU") @University(name = "KU") private String uniName;

Untuk mengakses data anotasi pada waktu runtime, gunakan metode getAnnotationsByType() atau getAnnotations() dari Reflection API.

java

  1. Tipe Data Primitif Java: Panduan Lengkap dengan Contoh
  2. Menguasai Operator Java: Tipe, Sintaks, & Contoh Praktis
  3. Menguasai Antarmuka Java: Konsep, Implementasi, dan Praktik Terbaik
  4. Menguasai Java Try-with-Resources: Manajemen Sumber Daya Otomatis Dijelaskan
  5. Anotasi Java Dijelaskan: Jenis, Penempatan, dan Contoh Praktis
  6. Jenis Anotasi Java: Panduan Lengkap tentang Anotasi Terdefinisi, Kustom, dan Meta
  7. Memahami Java String.charAt(): Sintaks, Tipe Kembali, Pengecualian, dan Contoh Praktis
  8. Menguasai Java String.endsWith(): Cara Memeriksa Akhir String dengan Contoh
  9. Menguasai Penggantian String Java: replace(), replaceAll(), dan replaceFirst() Dijelaskan
  10. Memahami Tipe Variabel Java: Panduan Komprehensif