Rumah > Java > javaTutorial > Kelas Termeterai Kotlin lwn. Java Enums (dan Antara Muka Termeterai!): Kisah Hierarki Terhad

Kelas Termeterai Kotlin lwn. Java Enums (dan Antara Muka Termeterai!): Kisah Hierarki Terhad

Patricia Arquette
Lepaskan: 2024-11-27 07:16:13
asal
449 orang telah melayarinya

Kotlin Sealed Classes vs. Java Enums (and Sealed Interfaces!): A Tale of Limited Hierarchies

Bayangkan anda seorang raja dengan titah diraja. Anda ingin mengisytiharkan bahawa hanya individu tertentu boleh mewarisi takhta, dan tidak ada orang lain. Dalam dunia pengaturcaraan, itu seperti kelas tertutup! Ia mengehadkan hierarki, memastikan bahawa hanya satu set subkelas tertentu boleh wujud. ?

Jawa: Kerajaan Enum

Java mempunyai enum, iaitu jenis kelas khas yang mewakili set tetap pemalar. Mereka seperti mahkamah diraja, dengan setiap ahli mempunyai peranan tertentu dan tiada kemungkinan menambah ahli baharu.

// Java
public enum RoyalTitle {
    KING,
    QUEEN,
    PRINCE,
    PRINCESS
}
Salin selepas log masuk

Enum bagus untuk mewakili set pilihan yang terhad, tetapi mereka tidak mempunyai fleksibiliti kelas. Anda tidak boleh menambah ahli baharu atau melanjutkan mereka dengan gelagat tambahan. Ia seperti mempunyai struktur mahkamah yang tegar tanpa ruang untuk gelaran atau peranan baharu. ?

Kotlin: Dinasti Kelas Termeterai

Kotlin memperkenalkan kelas tertutup, yang membolehkan anda mentakrifkan hierarki subkelas terhad. Hanya subkelas yang ditakrifkan dalam fail yang sama dengan kelas tertutup boleh mewarisi daripadanya. Ia seperti raja mengisytiharkan individu tertentu yang layak untuk takhta.

// Kotlin
sealed class RoyalTitle {
    object King : RoyalTitle()
    object Queen : RoyalTitle()
    data class Prince(val name: String) : RoyalTitle()
    data class Princess(val name: String) : RoyalTitle()
}
Salin selepas log masuk

Kelas tertutup menawarkan beberapa kelebihan:

  • Warisan terkawal: Mereka menghalang subkelas yang tidak diingini daripada dicipta, memastikan keselamatan jenis.
  • Pernyataan apabila lengkap: Apabila menggunakan ungkapan apabila dengan kelas tertutup, pengkompil boleh menyemak sama ada anda telah merangkumi semua subkelas yang mungkin, mengelakkan ralat.
  • Fleksibiliti: Subkelas boleh mempunyai sifat dan gelagat yang berbeza, memberikan lebih ekspresif daripada enum.

Rakan Sejawat Java: Antara Muka Termeterai (Java 17 )

Java, yang mengiktiraf had enum, memperkenalkan antara muka tertutup dalam Java 17. Ini membolehkan anda mentakrifkan antara muka dengan set terhad subkelas yang dibenarkan, serupa dengan kelas tertutup Kotlin.

// Java
public sealed interface RoyalTitle permits King, Queen, Prince, Princess {}
Salin selepas log masuk

Ini memberikan lebih fleksibiliti daripada enum sambil mengekalkan kawalan ke atas hierarki warisan. Walau bagaimanapun, ia masih merupakan ciri yang agak baharu dalam Java, dan kelas tertutup Kotlin menawarkan sintaks dan penyepaduan yang lebih ringkas dengan ungkapan bila.

Kesimpulannya (Proklamasi Diraja)

Kelas tertutup Kotlin menyediakan cara yang berkesan untuk menentukan hierarki kelas terhad, menawarkan lebih banyak fleksibiliti dan keselamatan jenis daripada enum Java. Dengan penambahan antara muka tertutup, Java mengejar, tetapi kelas tertutup Kotlin kekal sebagai penyelesaian yang lebih matang dan ekspresif. Jadi, jika anda bersedia untuk memerintah kod anda dengan dekri diraja, terima kuasa kelas tertutup! ?

P.S. Jika anda seorang pembangun Java yang masih bergantung pada enum, jangan risau. Anda sentiasa boleh meneroka antara muka tertutup untuk lebih fleksibiliti. Ia mungkin tidak sehebat kelas Kotlin yang dimeterai, tetapi ia adalah satu langkah ke arah kerajaan warisan yang lebih terkawal! ?

Atas ialah kandungan terperinci Kelas Termeterai Kotlin lwn. Java Enums (dan Antara Muka Termeterai!): Kisah Hierarki Terhad. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan