java
Dalam tutorial ini, kita akan mempelajari apa itu anotasi, anotasi Java yang berbeda dan cara menggunakannya dengan bantuan contoh.
Anotasi Java adalah metadata (data tentang data) untuk kode sumber program kami.
Mereka memberikan informasi tambahan tentang program ke kompiler tetapi bukan bagian dari program itu sendiri. Anotasi ini tidak memengaruhi eksekusi program yang dikompilasi.
Anotasi dimulai dengan @
. Sintaksnya adalah:
@AnnotationName
Mari kita ambil contoh @Override
anotasi.
@Override
anotasi menetapkan bahwa metode yang telah ditandai dengan anotasi ini menimpa metode superclass dengan nama metode, tipe kembalian, dan daftar parameter yang sama.
Tidak wajib menggunakan @Override
saat mengganti metode. Namun, jika kita menggunakannya, kompilator memberikan kesalahan jika ada yang salah (seperti tipe parameter yang salah) saat mengganti metode.
class Animal {
public void displayInfo() {
System.out.println("I am an animal.");
}
}
class Dog extends Animal {
@Override
public void displayInfo() {
System.out.println("I am a dog.");
}
}
class Main {
public static void main(String[] args) {
Dog d1 = new Dog();
d1.displayInfo();
}
}
Keluaran
I am a dog.
Dalam contoh ini, metode displayInfo()
hadir di kedua superclass Hewan dan subkelas Anjing . Saat metode ini dipanggil, metode dari subkelas akan dipanggil sebagai ganti metode di superkelas.
Anotasi juga dapat menyertakan elemen (anggota/atribut/parameter).
Anotasi penanda tidak mengandung anggota/elemen. Ini hanya digunakan untuk menandai deklarasi.
Sintaksnya adalah:
@AnnotationName()
Karena anotasi ini tidak mengandung elemen, tanda kurung dapat dikecualikan. Misalnya,
@Override
Anotasi elemen tunggal hanya berisi satu elemen.
Sintaksnya adalah:
@AnnotationName(elementName = "elementValue")
Jika hanya ada satu elemen, itu adalah konvensi untuk menamai elemen itu sebagai nilai .
@AnnotationName(value = "elementValue")
Dalam hal ini, nama elemen juga dapat dikecualikan. Nama elemen akan menjadi nilai secara default.
@AnnotationName("elementValue")
Anotasi ini berisi beberapa elemen yang dipisahkan dengan koma.
Sintaksnya adalah:
@AnnotationName(element1 = "value1", element2 = "value2")
Deklarasi apa pun dapat ditandai dengan anotasi dengan menempatkannya di atas deklarasi itu. Pada Java 8, anotasi juga dapat ditempatkan sebelum tipe.
Seperti disebutkan di atas, anotasi Java dapat ditempatkan di atas kelas, metode, antarmuka, bidang, dan deklarasi elemen program lainnya.
import java.util.*;
class Main {
@SuppressWarnings("unchecked")
static void wordsList() {
ArrayList wordList = new ArrayList<>();
// This causes an unchecked warning
wordList.add("programiz");
System.out.println("Word list => " + wordList);
}
public static void main(String args[]) {
wordsList();
}
}
Keluaran
Word list => [programiz]
Jika program di atas dikompilasi tanpa menggunakan @SuppressWarnings("unchecked")
anotasi, compiler akan tetap mengkompilasi program tetapi akan memberikan peringatan seperti:
Main.java uses unchecked or unsafe operations. Word list => [programiz]
Kami mendapatkan peringatan
Main.java uses unchecked or unsafe operations
karena pernyataan berikut.
ArrayList wordList = new ArrayList<>();
Ini karena kita belum mendefinisikan tipe generik dari daftar array. Kami dapat memperbaiki peringatan ini dengan menentukan generik di dalam kurung sudut <>
.
ArrayList<String> wordList = new ArrayList<>();
Sebelum Java 8, anotasi hanya dapat diterapkan pada deklarasi. Sekarang, anotasi jenis dapat digunakan juga. Ini berarti bahwa kita dapat menempatkan anotasi di mana pun kita menggunakan suatu jenis.
Panggilan konstruktor
new @Readonly ArrayList<>()
Ketik definisi
@NonNull String str;
Deklarasi ini menetapkan variabel non-null str bertipe String
untuk menghindari NullPointerException
.
@NonNull List<String> newList;
Deklarasi ini menetapkan daftar non-null dari tipe String
.
List<@NonNull String> newList;
Deklarasi ini menetapkan daftar nilai non-null dari tipe String
.
Ketik gips
newStr = (@NonNull String) str;
memperluas dan mengimplementasikan klausa
class Warning extends @Localized Message
melempar klausa
public String readMethod() throws @Localized IOException
Anotasi jenis memungkinkan kode Java dianalisis dengan lebih baik dan memberikan pemeriksaan jenis yang lebih kuat.
1. Anotasi standar
@Deprecated
@Override
@SuppressWarnings
@SafeVarargs
@FunctionalInterface
2. Anotasi meta
@Retention
@Documented
@Target
@Inherited
@Repeatable
3. Anotasi khusus
Jenis anotasi ini dijelaskan secara rinci dalam tutorial Jenis Anotasi Java.
@Deprecated
, @Override
, @SuppressWarnings
digunakan untuk tujuan ini.java
Java LinkedList Dalam tutorial ini, kita akan belajar tentang Java LinkedList secara detail dengan bantuan contoh. LinkedList kelas kerangka koleksi Java menyediakan fungsionalitas struktur data daftar tertaut (daftar tertaut ganda). Setiap elemen dalam daftar tertaut dikenal sebagai simpul . In
Java ArrayDeque Dalam tutorial ini, kita akan belajar tentang kelas ArrayDeque dan metodenya dengan bantuan contoh. Selain itu, kita akan belajar menggunakan deque array untuk mengimplementasikan tumpukan. Di Java, kita bisa menggunakan ArrayDeque class untuk mengimplementasikan struktur data antr
Antrian Pemblokiran Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java BlockingQueue dan metodenya. BlockingQueue antarmuka Java Collections framework memperluas Queue antarmuka. Ini memungkinkan operasi apa pun untuk menunggu hingga berhasil dilakukan. Misalnya, jika kita ingin me
Java ArrayBlockingQueue Dalam tutorial ini, kita akan belajar tentang kelas ArrayBlockingQueue dan metodenya dengan bantuan contoh. ArrayBlockingQueue class framework Java Collections menyediakan implementasi antrian pemblokiran menggunakan array. Ini mengimplementasikan antarmuka Java BlockingQu