Ekspresi Switch dengan Enum
Gunakan ekspresi switch modern dengan enum untuk percabangan yang rapi dan mencakup semua kemungkinan.
Ekspresi Switch dengan Enum adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.
Ekspresi Switch dengan Enumerasi
Ekspresi switch (Java 14+) dengan enumerasi menyediakan pengarahan berdasarkan tipe yang menyeluruh dan ringkas. Ketika semua konstanta enumerasi tercakup, default tidak diperlukan.
Pernyataan Switch Tradisional
Pernyataan switch klasik dapat digunakan dengan enumerasi, tetapi memerlukan break untuk mencegah eksekusi berlanjut ke cabang berikutnya.
enum Severity { LOW, MEDIUM, HIGH, CRITICAL }
Severity s = Severity.HIGH;
String action;
switch (s) {
case LOW:
action = "Log and monitor";
break;
case MEDIUM:
action = "Notify on-call team";
break;
case HIGH:
action = "Page engineer immediately";
break;
case CRITICAL:
action = "Activate incident response";
break;
default:
action = "Unknown";
}
System.out.println(action); // Page engineer immediatelyEkspresi Switch dengan Label Panah
Ekspresi switch dengan label panah menghilangkan eksekusi berlanjut dan break. Ekspresi ini menghasilkan sebuah nilai dan harus mencakup semua kemungkinan.
enum Severity { LOW, MEDIUM, HIGH, CRITICAL }
Severity s = Severity.HIGH;
String action = switch (s) {
case LOW -> "Log and monitor";
case MEDIUM -> "Notify on-call team";
case HIGH -> "Page engineer immediately";
case CRITICAL -> "Activate incident response";
// no default needed — all cases covered
};
System.out.println(action); // Page engineer immediatelyEkspresi Switch dengan Blok
Jika logika case memerlukan beberapa pernyataan, gunakan blok dengan yield untuk menghasilkan nilai hasil.
enum DayOfWeek { MON, TUE, WED, THU, FRI, SAT, SUN }
DayOfWeek day = DayOfWeek.FRI;
int hoursOpen = switch (day) {
case MON, TUE, WED, THU -> 8;
case FRI -> {
System.out.println("Half day on Friday!");
yield 4; // yield returns value from block
}
case SAT, SUN -> 0;
};
System.out.println("Hours open: " + hoursOpen); // Hours open: 4Mengelompokkan Beberapa Kasus
Beberapa konstanta enumerasi dapat menggunakan kasus yang sama dengan pemisahan menggunakan koma.
enum Season { SPRING, SUMMER, FALL, WINTER }
Season season = Season.SUMMER;
String activity = switch (season) {
case SPRING, FALL -> "Hike in the mountains";
case SUMMER -> "Beach vacation";
case WINTER -> "Ski at the resort";
};
System.out.println(activity); // Beach vacationMengembalikan Nilai dari Metode dengan Switch
Ekspresi switch sangat cocok digunakan sebagai pernyataan return dalam metode sehingga maksudnya menjadi jelas.
enum Priority { LOW, NORMAL, HIGH, URGENT }
static int getSlaHours(Priority p) {
return switch (p) {
case LOW -> 72;
case NORMAL -> 24;
case HIGH -> 4;
case URGENT -> 1;
};
}
System.out.println(getSlaHours(Priority.URGENT)); // 1
System.out.println(getSlaHours(Priority.LOW)); // 72Ekspresi Switch dalam Stream
Ekspresi switch dapat digunakan di dalam operasi stream untuk melakukan transformasi setiap elemen dengan rapi.
import java.util.*;
import java.util.stream.*;
enum Status { PENDING, ACTIVE, CLOSED }
record Account(String id, Status status) {}
List<Account> accounts = List.of(
new Account("A1", Status.ACTIVE),
new Account("A2", Status.PENDING),
new Account("A3", Status.CLOSED)
);
accounts.stream()
.map(a -> a.id() + ": " + switch (a.status()) {
case ACTIVE -> "\u2705 Live";
case PENDING -> "\u23f3 Awaiting activation";
case CLOSED -> "\u274c Deactivated";
})
.forEach(System.out::println);Kelengkapan saat Kompilasi
Kompilator memastikan bahwa semua konstanta enumerasi tercakup. Menambahkan konstanta baru ke enumerasi akan menyebabkan error kompilasi pada semua ekspresi switch yang tidak menanganinya.
enum Color { RED, GREEN, BLUE } // add YELLOW here → compile error below
Color c = Color.GREEN;
// This switch is exhaustive for RED, GREEN, BLUE
// If you add YELLOW to the enum without adding a case here,
// the compiler will report an error.
String hex = switch (c) {
case RED -> "#FF0000";
case GREEN -> "#00FF00";
case BLUE -> "#0000FF";
};
System.out.println(hex); // #00FF00Switch dengan default demi Keamanan
Saat menggunakan pernyataan switch, bukan ekspresi, atau saat switch memang sengaja hanya mencakup beberapa kasus, tambahkan kasus default.
enum Feature { DARK_MODE, PUSH_NOTIFICATIONS, ANALYTICS, BETA_FEATURE }
static boolean isEnabled(Feature feature) {
return switch (feature) {
case DARK_MODE, PUSH_NOTIFICATIONS -> true;
case ANALYTICS -> false;
default -> {
System.out.println("Unknown feature: " + feature);
yield false;
}
};
}
System.out.println(isEnabled(Feature.DARK_MODE)); // true
System.out.println(isEnabled(Feature.BETA_FEATURE)); // falsePraktik: Siklus Hidup Pesanan
Mesin keadaan siklus hidup pesanan yang lengkap menggunakan ekspresi switch untuk menentukan transisi yang diizinkan.
enum OrderState { CART, PENDING, CONFIRMED, SHIPPED, DELIVERED, CANCELLED }
static Set<OrderState> allowedTransitions(OrderState from) {
return switch (from) {
case CART -> Set.of(OrderState.PENDING, OrderState.CANCELLED);
case PENDING -> Set.of(OrderState.CONFIRMED, OrderState.CANCELLED);
case CONFIRMED -> Set.of(OrderState.SHIPPED);
case SHIPPED -> Set.of(OrderState.DELIVERED);
case DELIVERED, CANCELLED -> Set.of(); // terminal states
};
}
System.out.println(allowedTransitions(OrderState.PENDING));
// [CONFIRMED, CANCELLED]Switch pada String vs Enumerasi
Switch pada String memerlukan pemeriksaan null dan peka terhadap huruf besar-kecil. Switch pada enumerasi aman terhadap null (NPE jika null) dan aman berdasarkan tipe — gunakan enumerasi jika kumpulan nilainya sudah diketahui.
// String switch — fragile
String role = "admin";
String label = switch (role.toLowerCase()) {
case "admin" -> "Administrator";
case "guest" -> "Guest User";
default -> "Unknown";
};
// Enum switch — type-safe
enum Role { ADMIN, GUEST }
Role r = Role.ADMIN;
String label2 = switch (r) {
case ADMIN -> "Administrator";
case GUEST -> "Guest User";
};
System.out.println(label2); // AdministratorPemeriksaan Singkat
Anda memiliki enumerasi dengan 4 konstanta dan menulis ekspresi switch yang mencakup keempatnya. Apa yang terjadi jika Anda menambahkan konstanta ke-5 ke enumerasi tersebut?
Rangkuman: Ekspresi Switch dengan Enumerasi
Hal-hal penting:
- Ekspresi switch dengan label panah menghilangkan kebutuhan akan break dan fall-through
- Gunakan yield untuk mengembalikan nilai dari kasus berbentuk blok
- Kelompokkan beberapa konstanta dengan koma: case A, B ->
- Ekspresi switch lengkap tidak memerlukan default jika semua konstanta sudah tercakup
- Menambahkan konstanta enumerasi baru akan menyebabkan error kompilasi pada ekspresi switch yang lengkap
- Ekspresi switch sangat cocok digunakan dalam operasi map() pada stream
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Ekspresi Switch dengan Enum” gratis?
Ya — teks lengkap “Ekspresi Switch dengan Enum” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Ekspresi Switch dengan Enum”?
Gunakan ekspresi switch modern dengan enum untuk percabangan yang rapi dan mencakup semua kemungkinan. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Ekspresi Switch dengan Enum” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mendefinisikan dan Menggunakan Enum
- Enum dengan Field dan Metode
- Ekspresi Switch dengan Enum
- EnumSet dan EnumMap