Jadual Kandungan
✅ Apakah instanceof corak yang sesuai?
? Mekanisme kerja corak yang sepadan
⚠️Prectautions untuk digunakan
? Senario aplikasi praktikal
1. Menulis semula kaedah equals() lebih mudah
2. Mengendalikan jenis campuran dalam koleksi (tidak disyorkan, tetapi kadang -kadang tidak dapat dielakkan)
? Proses Evolusi (disokong oleh versi Java)
✅ Ringkasan: Manfaat padanan corak
Rumah Java javaTutorial Pencocokan corak untuk `InstanceOf` dalam java moden

Pencocokan corak untuk `InstanceOf` dalam java moden

Jul 26, 2025 am 03:37 AM
java

Java 14 memperkenalkan corak pencocokan contoh sebagai ciri pratonton, yang membolehkan pembolehubah jenis diisytiharkan dan ditukar secara automatik semasa pemeriksaan jenis; 2. Pencocokan corak dilaksanakan melalui sintaks jenis IF (OBJ Instanceof jenis), dan pembolehubah hanya sah dalam skop dengan keadaan yang benar dan tidak memerlukan pemutus; 3. Ciri ini meningkatkan kebolehbacaan dan keselamatan kod, mengurangkan kod boilerplate, dan mengelakkan risiko ClassCastException; 4. Apabila menggunakannya, anda perlu memberi perhatian kepada skop yang berubah -ubah dan menamakan konflik, dan tidak dapat menutup pembolehubah luaran yang ada; 5. Sejak Java 16, pemadanan corak Instanceof telah menjadi fungsi standard formal, yang digunakan secara meluas untuk senario seperti sama dengan kaedah penulisan semula dan pemprosesan polimorfik. Adalah disyorkan untuk menggantikan penukaran jenis eksplisit tradisional.

Pencocokan corak untuk `InstanceOf` dalam java moden

Java 14 memperkenalkan pemadanan corak instanceof , peningkatan bahasa penting yang direka untuk memudahkan pemeriksaan jenis dan jenis kod penukaran. Dalam Jawa Tradisional, kita biasanya menggunakan instanceof seperti ini:

Pencocokan corak untuk `InstanceOf` dalam java moden
 jika (OBJ Instanceof String) {
    String s = (String) OBJ;
    System.out.println (s.length ());
}

Di sini anda perlu menilai jenis terlebih dahulu, kemudian melakukan pemutus, berulang -ulang dan berlebihan. Pemadanan corak menjadikan proses ini lebih mudah, lebih selamat dan boleh dibaca.


✅ Apakah instanceof corak yang sesuai?

Bermula dari Java 14 (sebagai ciri pratonton), instanceof menyokong secara langsung mengisytiharkan pembolehubah corak jenis . Jika jenis sepadan, pemboleh ubah akan melengkapkan penukaran jenis secara automatik dan bertindak dalam blok if .

Pencocokan corak untuk `InstanceOf` dalam java moden

TAMAT:

 jika (OBJ instanceof jenis pembolehubah) {
    // Variabel sudah taip, tiada pemutus diperlukan}

Contoh:

Pencocokan corak untuk `InstanceOf` dalam java moden
 jika (obj instanceof string s) {
    System.out.println (s.length ()); // s adalah rentetan yang ditukar secara automatik
} else {
    System.out.println ("bukan rentetan");
}

Barisan kod ini bersamaan dengan penukaran eksplisit sebelumnya, tetapi lebih mudah dan lebih selamat.


? Mekanisme kerja corak yang sepadan

Pencocokan corak menggabungkan dua operasi:

  1. Jenis cek ( instanceof penghakiman)
  2. Taipkan penukaran dalam skop

Pengkompil akan memastikan:

  • Pembolehubah s hanya tersedia dalam skop dengan keadaan true
  • Penukaran jenis selamat dan tidak muncul ClassCastException
 jika (OBJ Instanceof Integer i && i> 10) {
    System.out.println ("Integer lebih besar daripada 10:" i);
}

Nota: Anda boleh menggunakan pembolehubah baru i secara langsung dalam keadaan, dan juga mengambil bahagian dalam penghakiman logik berikutnya.


⚠️Prectautions untuk digunakan

  • Batasan Skop Variabel : Pembolehubah skematik hanya sah dalam skop di mana instanceof adalah true .

     jika (! (obj instanceof string s)) {
        // s tidak tersedia di sini!
        kembali;
    }
    System.out.println (s.length ()); // ✅ boleh diakses
  • Tidak boleh menutup pembolehubah luaran : Tidak boleh menggunakan nama pembolehubah sedia ada sebagai pembolehubah corak.

     String S = "Hello";
    jika (obj instanceof string s) {} // ❌ ralat kompilasi: duplikasi berubah -ubah
  • Struktur Warisan Sokongan : Ia sering digunakan untuk menangani objek polimorfik, seperti mengekstrak jenis tertentu dari Object .

     Objek obj = getSomeObject ();
    
    jika (OBJ Instanceof Dog d) {
        d.bark ();
    } else if (obj instanceof Cat c) {
        c.meow ();
    }

? Senario aplikasi praktikal

Penulisan tradisional:

 boolean awam sama dengan (objek o) {
    jika (! (o instanceof orang)) kembali palsu;
    Orang p = (orang) o;
    kembali nama.equals (p.name);
}

Setelah menggunakan corak padanan:

 boolean awam sama dengan (objek o) {
    kembali o instanceof orang p && name.equals (p.name);
}

Lebih pendek, lebih jelas, dan mengelakkan kurungan dan penukaran yang tidak perlu.

2. Mengendalikan jenis campuran dalam koleksi (tidak disyorkan, tetapi kadang -kadang tidak dapat dielakkan)

 untuk (item objek: mixedList) {
    jika (contoh item rentetan s) {
        System.out.println ("String:" S.ToUpperCase ());
    } else if (item instanceof integer i) {
        System.out.println ("Nombor:" (i * 2));
    }
}

? Proses Evolusi (disokong oleh versi Java)

Versi Java Negeri
Java 14 Ciri Pratonton (perlu diaktifkan)
Java 15 Pratonton kedua
Java 16 Pelepasan rasmi ✅

Bermula dari Java 16, pemadanan corak instanceof telah menjadi ciri standard dan boleh digunakan tanpa konfigurasi tambahan.


✅ Ringkasan: Manfaat padanan corak

  • Kurangkan kod boilerplate (boilerplate)
  • Menghapuskan pelakon yang jelas untuk mengurangkan risiko kesilapan
  • Meningkatkan kebolehbacaan kod dan keselamatan
  • Lebih semulajadi menyokong corak umum "penggunaan pertanyaan jenis"

Pada dasarnya itu sahaja. Sekarang tulis instanceof dan jangan mengubah secara manual - gunakan corak yang sepadan untuk menjadi lebih moden dan elegan.

Atas ialah kandungan terperinci Pencocokan corak untuk `InstanceOf` dalam java moden. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Membaca dari Stdin dalam Contoh Membaca dari Stdin dalam Contoh Jul 27, 2025 am 04:15 AM

Gunakan fmt.scanf untuk membaca input diformat, sesuai untuk data berstruktur yang mudah, tetapi rentetan dipotong ketika menghadapi ruang; 2. Adalah disyorkan untuk menggunakan bufio.scanner untuk membaca garis demi baris, menyokong input berbilang baris, pengesanan EOF dan input saluran paip, dan boleh mengendalikan kesilapan pengimbasan; 3. Gunakan io.readall (os.stdin) untuk membaca semua input sekaligus, sesuai untuk memproses data blok besar atau aliran fail; 4. Sambutan utama masa nyata memerlukan perpustakaan pihak ketiga seperti golang.org/x/term, dan Bufio mencukupi untuk senario konvensional; Cadangan Praktikal: Gunakan fmt.scan untuk input mudah interaktif, gunakan bufio.scanner untuk input baris atau saluran paip, gunakan io.readall untuk data blok besar, dan sentiasa mengendalikan

Panduan Lengkap ke kelas Java `Pilihan` Panduan Lengkap ke kelas Java `Pilihan` Jul 27, 2025 am 12:22 AM

Pilihan adalah kelas kontena yang diperkenalkan oleh Java 8 untuk pengendalian yang lebih selamat dari nilai -nilai yang berpotensi null, dengan tujuan terasnya adalah dengan jelas "nilai hilang" dan mengurangkan risiko nullPointerexception. 1. Buat contoh kosong menggunakan optional.empty (), optional.of (nilai) membungkus nilai non-null, dan optional.ofnullable (nilai) dengan selamat membungkus nilai null. 2. Elakkan menggabungkan ispresent () dan dapatkan () secara langsung. Anda harus memberi keutamaan untuk menggunakan Orelse () untuk memberikan nilai lalai. Orelseget () melaksanakan pengiraan kelewatan. Kaedah ini disyorkan apabila nilai lalai adalah overhead.

Pilihan pengkomputeran tanpa pelayan SQL Pilihan pengkomputeran tanpa pelayan SQL Jul 27, 2025 am 03:07 AM

SQLServer sendiri tidak menyokong seni bina tanpa pelayan, tetapi platform awan menyediakan penyelesaian yang sama. 1. Kolam ServerlessSQL Azure boleh secara langsung menanyakan fail Datalake dan caj berdasarkan penggunaan sumber; 2. 3. Awsathena menyokong pertanyaan SQL standard untuk data S3, dan caj berdasarkan data yang diimbas; 4. GooglebigQuery mendekati konsep tanpa pelayan melalui FederatedQuery; 5. Sekiranya anda mesti menggunakan fungsi SQLServer, anda boleh memilih perkhidmatan tanpa pelayan AzuresqLdatabase

Python semak jika kunci wujud dalam contoh kamus Python semak jika kunci wujud dalam contoh kamus Jul 27, 2025 am 03:08 AM

Adalah disyorkan untuk menggunakan kata kunci untuk memeriksa sama ada kunci wujud dalam kamus, kerana ia adalah ringkas, cekap dan sangat mudah dibaca; 2. Ia tidak disyorkan untuk menggunakan kaedah GET () untuk menentukan sama ada kunci wujud, kerana ia akan salah apabila kunci wujud tetapi nilai tidak ada; 3. Anda boleh menggunakan kaedah kekunci (), tetapi ia berlebihan, kerana secara lalai untuk memeriksa kunci; 4. Apabila anda perlu mendapatkan nilai dan kunci yang dijangkakan biasanya wujud, anda boleh menggunakan cuba-kecuali untuk menangkap pengecualian KeyError. Kaedah yang paling disyorkan ialah menggunakan kata kunci, yang selamat dan cekap, dan tidak terjejas oleh nilai tiada, yang sesuai untuk kebanyakan senario.

Persediaan VSCode untuk Pembangunan Java Persediaan VSCode untuk Pembangunan Java Jul 27, 2025 am 02:28 AM

Installjdk, setjava_home, InstalljavaextensionPackinvscode, createoropenamaven/gradleProject, memastikanprojectstructure, anduseBuilt-inrun/debugfeatures;

Mengoptimumkan interaksi pangkalan data dalam aplikasi Java Mengoptimumkan interaksi pangkalan data dalam aplikasi Java Jul 27, 2025 am 02:32 AM

Useconnectionpoolingwithhikaricptoreusedatabaseconnectionsandreduceoverhead.2.UsePreparedStatementTopreventsqlinjectionAndroveProveQueryperformance.3.fetchonLyRequiredDataByselectingsPecificColumnSandapplyFilation.4.Se

Corak integrasi awan java dengan awan musim bunga Corak integrasi awan java dengan awan musim bunga Jul 27, 2025 am 02:55 AM

Menguasai model integrasi Springcloud adalah penting untuk membina sistem yang diedarkan moden. 1. Pendaftaran dan Penemuan Perkhidmatan: Pendaftaran dan penemuan perkhidmatan automatik direalisasikan melalui Eureka atau Springcloudkubernetes, dan pengimbangan beban dilakukan dengan reben atau loadbalancer; 2. 3. API Gateway: Gunakan Springcloudgateway untuk menyatukan entri, kawalan penghalaan dan pengurusan kebenaran, dan menyokong pengehadan dan pembalakan semasa; 4. Penjejakan pautan yang diedarkan: Menggabungkan sleuth dan zipkin untuk merealisasikan proses penuh permintaan visual.

Memahami Panggilan Sistem Linux Memahami Panggilan Sistem Linux Jul 27, 2025 am 12:16 AM

Panggilan sistem adalah mekanisme di mana program pengguna meminta operasi istimewa melalui antara muka kernel. Aliran kerja adalah: 1. Program pengguna memanggil fungsi enkapsulasi; 2. Tetapkan nombor panggilan sistem dan parameter kepada daftar; 3. Melaksanakan arahan syscall dan jatuh ke dalam negeri kernel; 4. Melaksanakan fungsi pemprosesan yang sepadan dalam jadual semak; 5. Kembali ke keadaan pengguna selepas pelaksanaan. Anda boleh menggunakan alat Strace untuk mengesan, terus panggil fungsi SYSCall () atau periksa fail header Unitd.H untuk melihat nombor panggilan. Anda perlu ambil perhatian bahawa perbezaan antara panggilan sistem dan fungsi perpustakaan adalah sama ada mereka memasuki keadaan kernel, dan panggilan yang kerap akan menjejaskan prestasi. Anda harus mengoptimumkan dengan menggabungkan I/O, menggunakan kaedah MMAP dan Epoll, dan pemahaman panggilan sistem akan membantu anda menguasai mekanisme operasi asas Linux.

See all articles