Rumah> Java> javaTutorial> teks badan

Meneroka Kuasa Padanan Corak dengan Suis dalam Java 21

WBOY
Lepaskan: 2024-08-15 06:43:32
asal
890 orang telah melayarinya

Exploring the Power of Pattern Matching with Switch in Java 21

Satu kes penggunaan popular untuk pemadanan corak dengan suis ialah apabila bekerja dengan jenis data yang berbeza dalam atur cara. Pertimbangkan contoh kelas WeatherStation berikut yang mempunyai pelbagai jenis penderia dan mengembalikan suhu semasa:

`Stesen Cuaca kelas awam {

private Sensor sensor; public double getCurrentTemperature() { return switch (sensor) { case TemperatureSensor t -> t.reading(); case HumiditySensor h -> h.reading() * 0.9; // apply a 10% moisture correction default -> 0.0; // in case of an unhandled sensor type, return 0 }; }
Salin selepas log masuk

}
`
Di sini, kita dapat melihat bahawa antara muka Sensor digunakan untuk ekspresi pemilih, dan label kes menggunakan corak berdasarkan pelaksanaan Sensor tertentu: TemperatureSensor dan HumiditySensor. Ini membolehkan cara yang lebih ringkas dan boleh dibaca untuk mengendalikan pelbagai jenis data dalam pernyataan suis.

Satu lagi kes penggunaan untuk pemadanan corak dengan suis ialah apabila berurusan dengan enum. Sebelum padanan corak diperkenalkan, enum hanya boleh digunakan sebagai pemalar dalam label kes, mengehadkan nilai yang boleh diuji dalam pernyataan suis. Dengan ciri baharu, enum kini boleh layak dalam label kes, membolehkan padanan yang lebih tepat dan fleksibel.

Arah enum awam {
UTARA,
TIMUR,
SELATAN,
BARAT
}

pergerakan lompang awam(Arah arah) {
suis (arah) {
kes NORTH, NORTH_WEST, NORTH_EAST -> moveUp();
kes EAST,EAST_NORTH,EAST_SOUTH -> moveRight();
kes SOUTH,SOUTH_EAST,SOUTH_WEST -> moveDown();
kes WEST,WEST_NORTH,WEST_SOUTH -> moveLeft();
}
}

Di sini, kaedah move() menggunakan pernyataan suis untuk mengendalikan pergerakan dalam arah yang berbeza dengan mudah berdasarkan nilai enum Arah yang ditentukan. Dengan padanan corak, kami juga boleh menentukan kombinasi arah, seperti NORTH_WEST dan EAST_SOUTH, menjadikan kod kami lebih mantap dan fleksibel.

Akhir sekali, mari kita lihat contoh cara padanan corak boleh membantu dengan pengendalian ralat dalam pernyataan suis. Dalam suis tradisional, jika ungkapan pemilih tidak sepadan dengan mana-mana label kes, kes lalai boleh digunakan untuk mengendalikan ralat. Walau bagaimanapun, ini boleh membosankan apabila berurusan dengan berbilang label kes dan boleh menyebabkan pertindihan kod. Dalam padanan corak, pengecualian dilemparkan jika tiada satu pun daripada corak label kes sepadan dengan ungkapan pemilih, menjadikan pengendalian ralat lebih seragam dan kurang terdedah kepada ralat.

awam String getPlanetaryObject(PlanetaryBody body) {
suis kembali (badan) {
kes Planet p && p.getMass() > 1e29 -> p.getName() + " ialah gergasi gas";
kes Planet p && p.getMass() > 1e23 -> p.getName() + " ialah planet berbatu";
kes Bintang s && s.getLuminosity() > 1e32 -> s.getName() + " ialah bintang yang terang";
kes Bintang s && s.getLuminosity() < 1e28 -> s.getName() + " ialah bintang malap";
lalai -> buang MatchException baru("Tidak dapat menentukan jenis objek planet: " + body.getName());
};
}

Dalam contoh ini, kaedah getPlanetaryObject() mengambil objek PlanetaryBody, yang boleh menjadi sama ada planet atau bintang. Corak yang digunakan dalam label kes mempertimbangkan keadaan tambahan, seperti jisim planet atau kecerahan bintang. Jika tiada corak sepadan, MatchException dilemparkan, menjadikan pengendalian ralat lebih konsisten dan menghalang sebarang kemungkinan ralat.

Kesimpulan
Padanan corak untuk suis adalah salah satu ciri paling penting yang diperkenalkan di Jawa sejak kebelakangan ini. Ia membolehkan struktur aliran kawalan yang lebih fleksibel dan ringkas.

Tingkatkan kemahiran Java anda dengan mengambil pensijilan Java SE 21 Professional Certified Developer.

Atas ialah kandungan terperinci Meneroka Kuasa Padanan Corak dengan Suis dalam Java 21. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!