Java Academy · Pelajaran

Padanan Corak untuk instanceof

Ikat pemboleh ubah sambil menguji jenis

Pelajaran 1 daripada 413 langkah

Padanan Corak untuk instanceof ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 4 pelajaran.

Padanan Corak untuk Pemeriksaan Jenis

Cara lama menggunakan instanceof ialah menguji kemudian menukar jenis. Padanan corak menggabungkan ujian dan penukaran jenis dalam satu langkah, lalu mengikat pemboleh ubah bertip apabila ujian berjaya.

Kod Berlebihan Lama

Kod klasik memeriksa jenis, kemudian menukarkannya kepada pemboleh ubah baharu. Kod ini berulang dan mudah tersilap.

public class Main {
    public static void main(String[] args) {
        Object obj = "hello";
        if (obj instanceof String) {
            String s = (String) obj;
            System.out.println(s.length());
        }
    }
}

Bentuk Baharu

Corak jenis mengisytiharkan pemboleh ubah sebaris: if (obj instanceof String s). Apabila nilainya benar, s sudah pun menjadi nilai yang telah ditukar jenisnya.

public class Main {
    public static void main(String[] args) {
        Object obj = "hello";
        if (obj instanceof String s) {
            System.out.println(s.length());
        }
    }
}

Pemboleh Ubah Pengikatan

Pemboleh ubah s dipanggil pemboleh ubah corak. Pemboleh ubah ini berada dalam skop di mana-mana sahaja pengkompil boleh membuktikan bahawa corak itu sepadan, menjadikan kod lebih ringkas dan selamat.

Menggunakannya dalam Syarat

Dalam syarat if yang sama, anda boleh menggunakan pemboleh ubah corak selepas &&, kerana padanan itu dijamin pada cabang tersebut.

public class Main {
    public static void main(String[] args) {
        Object obj = "developer";
        if (obj instanceof String s && s.length() > 5) {
            System.out.println("Long string: " + s);
        }
    }
}

Penyongsangan dan Skop Aliran

Dengan penyongsangan, skop berubah secara bijak. Selepas if (!(obj instanceof String s)) return;, pemboleh ubah s berada dalam skop sepanjang baki kaedah kerana kod hanya meneruskan pelaksanaan apabila padanan berjaya.

public class Main {
    static int safeLength(Object obj) {
        if (!(obj instanceof String s)) {
            return -1;
        }
        return s.length();
    }

    public static void main(String[] args) {
        System.out.println(safeLength("abc"));
        System.out.println(safeLength(42));
    }
}

Menggantikan equals dan Penukaran Jenis

Satu penggunaan yang lazim ialah penggantian equals yang kemas: uji jenis dan ikat pemboleh ubah dalam satu baris, kemudian bandingkan medan.

public class Main {
    static final class Point {
        final int x, y;
        Point(int x, int y) { this.x = x; this.y = y; }
        public boolean equals(Object o) {
            return o instanceof Point p && p.x == x && p.y == y;
        }
        public int hashCode() { return x * 31 + y; }
    }

    public static void main(String[] args) {
        System.out.println(new Point(1, 2).equals(new Point(1, 2)));
        System.out.println(new Point(1, 2).equals(new Point(3, 4)));
    }
}

Mengendalikan Jenis Campuran

Cawangan else if berantai dengan corak membolehkan anda memilih tindakan berdasarkan beberapa jenis yang mungkin dengan kemas.

public class Main {
    static String describe(Object obj) {
        if (obj instanceof Integer i) {
            return "int " + (i * 2);
        } else if (obj instanceof String s) {
            return "string of length " + s.length();
        } else {
            return "unknown";
        }
    }

    public static void main(String[] args) {
        System.out.println(describe(21));
        System.out.println(describe("hello"));
        System.out.println(describe(3.14));
    }
}

Nilai Kosong Tidak Pernah Dipadankan

Corak instanceof adalah palsu untuk nilai kosong, sama seperti operator klasik. Oleh itu, pemboleh ubah corak tidak pernah terikat kepada nilai kosong, sekali gus menghapuskan punca lazim pengecualian NullPointerException.

public class Main {
    public static void main(String[] args) {
        Object obj = null;
        if (obj instanceof String s) {
            System.out.println("matched: " + s);
        } else {
            System.out.println("null or not a String");
        }
    }
}

Kod Lebih Kemas dan Selamat

Pemadanan corak menghapuskan penukaran jenis yang berlebihan, mengehadkan skop supaya anda tidak boleh menyalahgunakan pemboleh ubah, dan hampir kelihatan seperti bahasa biasa. Inilah gaya yang disarankan dalam Java moden.

Menggabungkan Semuanya

Penghantar kecil yang memformatkan masukan berbeza menggunakan corak.

public class Main {
    static String format(Object o) {
        if (o instanceof Double d) return String.format("%.1f", d);
        if (o instanceof Integer i) return Integer.toString(i);
        if (o instanceof String s && !s.isBlank()) return s.trim();
        return "n/a";
    }

    public static void main(String[] args) {
        System.out.println(format(3.14159));
        System.out.println(format(99));
        System.out.println(format("  spaced  "));
        System.out.println(format(null));
    }
}

Semakan Pantas

Uji pemahaman anda tentang corak instanceof.

Ringkasan

Anda telah mempelajari pemadanan corak untuk instanceof.

  • Ia menggabungkan ujian jenis dan penukaran jenis menjadi satu ungkapan.
  • Skop pemboleh ubah corak terhad kepada tempat padanan itu dibuktikan.
  • Corak adalah palsu untuk nilai kosong, sekali gus mengelakkan pengecualian NullPointerException.
  • Ia memudahkan penggantian equals dan pemilihan tindakan berdasarkan jenis.
Percuma untuk bermula

Pelajari Java dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
104
Pelajaran
374

Soalan Lazim

Adakah pelajaran “Padanan Corak untuk instanceof” percuma?

Ya — teks penuh “Padanan Corak untuk instanceof” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Padanan Corak untuk instanceof”?

Ikat pemboleh ubah sambil menguji jenis Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Java Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Padanan Corak untuk instanceof” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Padanan Corak untuk instanceof
  2. Corak Record
  3. Corak Record Bersarang
  4. Corak dalam switch
← Kembali ke Java Academy