Java - Pemadanan Corak dengan Operator instanceof

Helo semua, pelukis Java masa depan! Hari ini, kita akan melakukan perjalanan yang menarik ke atas dunia pemadanan corak di Java. Jangan khawatir jika anda baru dalam pemrograman; saya akan menjadi pemandu anda yang mesra, dan kita akan membahas topik ini langkah demi langkah. Jadi, rakamkan rakaman anda yang maya (papan kekunci), dan mari kita melompat masuk!

Java - Pattern Matching

Apa itu Pemadatan Corak?

Sebelum kita mendeplesi ke atas perincian, mari kita faham apa itu pemadatan corak. Bayangkan anda adalah penyiasat yang mencuba untuk mengenalpasti objek di atas rakit penyembahan. Pemadatan corak adalah seperti memiliki rakaman super pintar yang membantu anda secara cepat mengenalpasti dan bekerja dengan objek-objek ini. Di Java, adalah fitur yang membenarkan kita untuk menguji sama ada objek adalah jenis khusus dan mengekstrak maklumat darinya dalam satu rakaman.

Operator instanceof: Alat Magik Kita

Di Java, operator instanceof adalah rakannya yang kena untuk pemadatan corak. Ia seperti satu penyataan yang memeriksa jika objek adalah salah satu contoh kelas khusus atau melaksanakan interfek khusus.

Cara Lama: Sebelum Java 16

Mari kita mula dengan cara yang kita gunakan sebelum Java 16 datang dan menyemak sedikit kira-kira atas:

Object rakit = "Helo, Pemadatan Corak!";

if (rakit instanceof String) {
String mesej = (String) rakit;
System.out.println("Mesej adalah: " + mesej.toUpperCase());
} else {
System.out.println("Ia bukan String!");
}

Dalam contoh ini, kita sedang memeriksa jika rakit objek kita adalah String. Jika ianya adalah, kita mengecast ia kepada String dan kemudian gunakannya. Ia berfungsi, tetapi agak kaku, seperti mencuba untuk membuka pintu sambil mengganggu.

Cara Baru: instanceof Dikembangkan (Java 16+)

Sekarang, mari kita lihat bagaimana Java 16 membuat hidup kita lebih mudah dengan operator instanceof yang dikembangkan:

Object rakit = "Helo, Pemadatan Corak!";

if (rakit instanceof String mesej) {
System.out.println("Mesej adalah: " + mesej.toUpperCase());
} else {
System.out.println("Ia bukan String!");
}

Lihatlah itu! Kita telah menggabungkan pemeriksaan jenis dan pengisytiharan variabel dalam satu baris. Ia seperti magik, tetapi hanya Java yang pintar!

Mari Latihan: Sehari di atas Zoo

Untuk benar-benar memahami pemadatan corak, mari kita bayangkan kita adalah penyelamat haiwan di atas zoo untuk sehari. Kita ada haiwan berbeza, dan kita perlu untuk memberi makan mereka dengan betul.

class Animal {}
class Lion extends Animal {
void roar() { System.out.println("Roar!"); }
}
class Elephant extends Animal {
void trumpet() { System.out.println("Toot!"); }
}
class Monkey extends Animal {
void chatter() { System.out.println("Ooh ooh ah ah!"); }
}

public class Zoo {
public static void main(String[] args) {
Animal[] animals = {new Lion(), new Elephant(), new Monkey()};

for (Animal animal : animals) {
if (animal instanceof Lion lion) {
System.out.println("Memberikan daging kepada singa.");
lion.roar();
} else if (animal instanceof Elephant elephant) {
System.out.println("Memberikan kacang untuk gajah.");
elephant.trumpet();
} else if (animal instanceof Monkey monkey) {
System.out.println("Memberikan pisang kepada monyet.");
monkey.chatter();
}
}
}
}

Dalam senario zoo ini, kita menggunakan pemadatan corak untuk mengenalpasti setiap haiwan dan berinteraksi dengannya secara berpatutan. Adakah ianya kemas bagaimana kita boleh memeriksa jenis dan memanggil method khusus dalam satu gerakan yang mulus?

Keuntungan Pemadatan Corak

  1. Kod yang Lebih Kemas: Mengurangkan keperluan untuk pengecastan yang eksplisit.
  2. Kod yang Lebih Selamat: Membantu mengelakkan ClassCastException dengan menggabungkan pemeriksaan instanceof dan pengecastan.
  3. Lebih Boleh Baca: Mengembalikan niat kod yang lebih jelas pada pandangan sekali.

Satu Peringatan

Walaupun pemadatan corak adalah kuat, ingatkan kata-kata bijak Uncle Ben: "Dengan kuasa besar datang tanggungjawab besar." Gunakannya dengan bijak dan jangan gunakannya terlalu kerap. Kadang-kadang, polimorfisme yang baik dan lama mungkin adalah pilihan yang lebih baik.

Latihan Membuat Betul

Sekarang giliran anda untuk bermain! Cuba untuk membuat senario anda sendiri di mana pemadatan corak boleh berguna. Mungkin kalkulator bentuk yang bertindak berbeza untuk lingkaran, segiempat, dan segitiga? Atau pemproses mesej yang menguruskan e-mel, teks, dan pos media sosial secara berbeza?

Penutup

Pemadatan corak dengan operator instanceof adalah seperti menambah satu penyataan baru ke atas buku penyataan Java anda. Ia menjadikan kod anda lebih kemas, lebih selamat dan lebih ekspressif. Apabila anda teruskan perjalanan Java anda, anda akan menemui lebih banyak tempat di mana trik ini yang kemas dapat berguna.

Ingat, pemrograman adalah seni sebanyak itu adalah saintifik. Lebih banyak anda latih, lebih baik anda akan menjadi diatas penggunaan fitur yang kuat ini. Jadi, teruskan untuk mengkod, teruskan untuk eksperimen, dan yang paling penting, bersenang-senang!

Sampaijumpa lagi, pengkoding yang gembira, pelukis Java masa depan! ?‍♂️?

Method Keterangan
instanceof Memeriksa jika objek adalah salah satu contoh kelas atau interfek khusus
getClass() Mengembalikan kelas masa menjalankan objek
equals() Membandingkan dua objek untuk kesamaan
hashCode() Mengembalikan nilai kesemutan untuk objek
toString() Mengembalikan penyataan rakaman bagi objek

Method ini adalah fundamental kepada pemrograman berorientasi objek Java dan sering digunakan bersama-sama dengan teknik pemadatan corak.

Credits: Image by storyset