Klausa permits
Senaraikan subjenis yang dibenarkan
Klausa permits ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 2 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.
Klausa untuk Subjenis yang Dibenarkan
Klausa permits ialah cara jenis tertutup menamakan subjenis yang dibenarkan. Klausa ini hadir sejurus selepas nama jenis dan kata kunci permits.
Sintaks Asas
Senaraikan subjenis yang dibenarkan, dipisahkan dengan koma, selepas permits.
public class Main {
sealed interface Vehicle permits Car, Truck, Motorcycle {}
record Car() implements Vehicle {}
record Truck() implements Vehicle {}
record Motorcycle() implements Vehicle {}
public static void main(String[] args) {
Vehicle v = new Truck();
System.out.println(v.getClass().getSimpleName());
}
}Melaksanakan Kontrak
Setiap subjenis yang dinamakan mesti benar-benar implements (untuk antara muka) atau extends (untuk kelas) jenis tertutup tersebut. Menamakan kelas dalam permits yang tidak berbuat demikian akan menghasilkan ralat kompilasi.
Meninggalkan Klausa Subjenis Dibenarkan
Jika semua subjenis yang dibenarkan diisytiharkan dalam fail yang sama dengan jenis tertutup, anda boleh meninggalkan permits sepenuhnya. Pengkompil akan membuat kesimpulan tentang senarai tersebut secara automatik.
public class Main {
sealed interface Status {}
record Active() implements Status {}
record Inactive() implements Status {}
public static void main(String[] args) {
Status s = new Active();
System.out.println(s.getClass().getSimpleName());
}
}Apabila Klausa Subjenis Dibenarkan Diperlukan
Jika subjenis berada dalam fail berasingan dalam pakej atau modul yang sama, anda mesti menyenaraikannya secara jelas dalam permits. Pengkompil tidak dapat membuat kesimpulan merentas fail.
Susunan Tidak Penting
Susunan nama dalam permits tidak mempunyai makna semantik. Susunan itu tidak menjejaskan cara penyataan pilihan berfungsi atau apa-apa yang lain; ia semata-mata senarai jenis yang dibenarkan.
Hierarki Kelas dengan Subjenis Dibenarkan
Klausa yang sama berfungsi untuk kelas tertutup dengan tingkah laku abstrak.
public class Main {
sealed static abstract class Node permits Leaf, Branch {
abstract int size();
}
static final class Leaf extends Node {
int size() { return 1; }
}
static final class Branch extends Node {
final Node a, b;
Branch(Node a, Node b) { this.a = a; this.b = b; }
int size() { return a.size() + b.size(); }
}
public static void main(String[] args) {
Node tree = new Branch(new Leaf(), new Branch(new Leaf(), new Leaf()));
System.out.println("Leaves: " + tree.size());
}
}Terlupa Menyenaraikan Subjenis
Jika sesebuah kelas melaksanakan antara muka tertutup tetapi tiada dalam permits, kompilasi akan gagal dengan mesej yang menyatakan bahawa kelas itu tidak dibenarkan melanjutkan jenis tertutup tersebut.
Jenis yang Dibenarkan Diketahui Umum
Senarai permits ialah sebahagian daripada kontrak jenis dan direkodkan dalam fail kelas. Alat serta pengkompil boleh membacanya untuk mengetahui set subjenis yang lengkap.
Mencampurkan Subjenis Muktamad dan Tertutup
Senarai permits boleh mencampurkan pengubah: sesetengah subjenis ialah final, manakala yang lain ialah sealed untuk meneruskan hierarki dengan lebih mendalam.
public class Main {
sealed interface Shape permits Circle, Polygon {}
record Circle(double r) implements Shape {}
sealed interface Polygon extends Shape permits Triangle, Rectangle {}
record Triangle() implements Polygon {}
record Rectangle() implements Polygon {}
public static void main(String[] args) {
Shape s = new Triangle();
System.out.println(s instanceof Polygon);
}
}Amalan Terbaik
Kekalkan jenis tertutup dan subjenisnya berdekatan untuk memudahkan pembacaan. Utamakan meninggalkan permits bagi hierarki kecil dalam satu fail, dan senaraikannya secara jelas apabila fail dipecahkan.
Semakan Pantas
Uji pemahaman anda tentang klausa subjenis yang dibenarkan.
Imbas Kembali
Anda telah mempelajari klausa permits.
- Klausa ini menyenaraikan subjenis yang dibenarkan selepas nama jenis tertutup.
- Setiap jenis yang disenaraikan mesti melanjutkan atau melaksanakan jenis tertutup tersebut.
- Klausa ini boleh ditinggalkan apabila semua subjenis berkongsi fail yang sama.
- Subjenis juga boleh menjadi tertutup untuk memanjangkan hierarki.
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 “Klausa permits” percuma?
Ya — teks penuh “Klausa permits” 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 “Klausa permits”?
Senaraikan subjenis yang dibenarkan 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 2 daripada 4.
Berapa lamakah pelajaran “Klausa permits” 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.