Mendefinisikan dan Menggunakan Enum
Deklarasikan tipe enum, gunakan konstantanya, dan lakukan iterasi dengan values() serta ordinal().
Mendefinisikan dan Menggunakan Enum adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Mendefinisikan dan Menggunakan Enumerasi
Enumerasi adalah kelas khusus yang merepresentasikan sekumpulan konstanta tetap. Enumerasi aman tipe, mudah dibaca, dan lebih kuat daripada konstanta int statis.
Mendeklarasikan Enumerasi
Gunakan kata kunci enum untuk mendeklarasikan enumerasi. Setiap konstanta secara implisit merupakan public static final dan sebuah instans dari tipe enumerasi tersebut.
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
FRIDAY, SATURDAY, SUNDAY
}
Day today = Day.WEDNESDAY;
System.out.println(today); // WEDNESDAY
System.out.println(today.name()); // WEDNESDAY
System.out.println(today.ordinal()); // 2 (zero-based index)Melakukan Iterasi dengan values()
EnumType.values() mengembalikan semua konstanta dalam urutan deklarasi. Gunakan ini untuk melakukan iterasi atau membuat menu.
enum Planet { MERCURY, VENUS, EARTH, MARS, JUPITER, SATURN, URANUS, NEPTUNE }
for (Planet p : Planet.values()) {
System.out.println(p.ordinal() + ": " + p);
}
// 0: MERCURY
// 1: VENUS
// 2: EARTH
// ...
// Count constants
System.out.println(Planet.values().length); // 8valueOf() dan Penguraian
Enum.valueOf(name) mengonversi String menjadi konstanta yang cocok. Akan melempar IllegalArgumentException jika tidak ditemukan.
enum Status { PENDING, ACTIVE, SUSPENDED, CLOSED }
String input = "ACTIVE";
Status s = Status.valueOf(input);
System.out.println(s); // ACTIVE
try {
Status bad = Status.valueOf("UNKNOWN");
} catch (IllegalArgumentException e) {
System.out.println("Invalid status: UNKNOWN");
}
// Safe parse pattern
static Status safeFrom(String name) {
try { return Status.valueOf(name.toUpperCase()); }
catch (IllegalArgumentException e) { return Status.PENDING; }
}Menggunakan Enumerasi dalam switch
Enumerasi bekerja sempurna dalam pernyataan dan ekspresi switch. Ekspresi switch modern membuat pengarahan berdasarkan enumerasi menjadi ringkas dan menyeluruh.
enum OrderStatus { CREATED, PROCESSING, SHIPPED, DELIVERED, CANCELLED }
OrderStatus status = OrderStatus.SHIPPED;
String message = switch (status) {
case CREATED -> "Order received, awaiting payment";
case PROCESSING -> "Payment confirmed, preparing shipment";
case SHIPPED -> "On the way — track your package";
case DELIVERED -> "Delivered! Enjoy your order";
case CANCELLED -> "Order cancelled";
};
System.out.println(message); // On the way — track your packageEnumerasi dengan if/else
Gunakan == untuk membandingkan konstanta enumerasi — konstanta tersebut adalah instans tunggal, sehingga kesamaan referensi berfungsi dengan benar.
enum UserRole { GUEST, MEMBER, ADMIN, SUPERADMIN }
UserRole role = UserRole.ADMIN;
if (role == UserRole.ADMIN || role == UserRole.SUPERADMIN) {
System.out.println("Access granted to admin panel");
} else {
System.out.println("Access denied");
}
// Enum comparison: never use .equals() for enums
// == is correct and more readableEnumerasi dalam Koleksi
Enumerasi dapat disimpan dalam koleksi standar. Gunakan EnumSet dan EnumMap untuk penyimpanan berbasis enumerasi berperforma tinggi (dibahas dalam pelajaran berikutnya).
import java.util.*;
enum Permission { READ, WRITE, DELETE, ADMIN }
Set<Permission> userPerms = new HashSet<>();
userPerms.add(Permission.READ);
userPerms.add(Permission.WRITE);
System.out.println(userPerms.contains(Permission.DELETE)); // false
System.out.println(userPerms.contains(Permission.READ)); // true
List<Permission> allPerms = Arrays.asList(Permission.values());
System.out.println(allPerms.size()); // 4Enumerasi Menerapkan Interface
Enumerasi dapat menerapkan interface, sehingga Anda dapat melampirkan perilaku ke setiap konstanta atau mendefinisikan kontrak umum untuk semua konstanta.
interface Describable {
String describe();
}
enum Season implements Describable {
SPRING, SUMMER, FALL, WINTER;
public String describe() {
return switch (this) {
case SPRING -> "Mild and rainy";
case SUMMER -> "Hot and sunny";
case FALL -> "Cool with falling leaves";
case WINTER -> "Cold and snowy";
};
}
}
for (Season s : Season.values()) {
System.out.println(s + ": " + s.describe());
}Enumerasi sebagai Mesin Status
Enumerasi sangat cocok untuk mesin status. Setiap konstanta merepresentasikan suatu status, dan metode mendefinisikan transisi yang valid.
enum TrafficLight {
RED, YELLOW, GREEN;
public TrafficLight next() {
return switch (this) {
case RED -> GREEN;
case GREEN -> YELLOW;
case YELLOW -> RED;
};
}
}
TrafficLight light = TrafficLight.RED;
for (int i = 0; i < 6; i++) {
System.out.println(light);
light = light.next();
}
// RED, GREEN, YELLOW, RED, GREEN, YELLOWPraktik Terbaik Enumerasi
Ikuti praktik terbaik berikut saat menggunakan enumerasi:
- Gunakan nama ALL_CAPS untuk konstanta (sesuai konvensi)
- Utamakan enumerasi daripada konstanta int atau String demi keamanan tipe
- Gunakan ekspresi switch untuk pengarahan yang menyeluruh
- Tambahkan bidang dan metode ke enumerasi ketika konstanta membawa data
Praktik: Kode Status HTTP
Enumerasi dunia nyata yang memodelkan kategori status HTTP dengan metode pabrik dari kode numerik.
enum HttpStatus {
OK(200), CREATED(201), BAD_REQUEST(400),
UNAUTHORIZED(401), NOT_FOUND(404), SERVER_ERROR(500);
public final int code;
HttpStatus(int code) { this.code = code; }
public static HttpStatus from(int code) {
for (HttpStatus s : values())
if (s.code == code) return s;
throw new IllegalArgumentException("Unknown HTTP code: " + code);
}
public boolean isSuccess() { return code >= 200 && code < 300; }
}
HttpStatus s = HttpStatus.from(404);
System.out.println(s + " (" + s.code + ") success=" + s.isSuccess());
// NOT_FOUND (404) success=falsePemeriksaan Singkat
Apa keluaran dari kode berikut?
enum Color { RED, GREEN, BLUE }
System.out.println(Color.GREEN.ordinal());Rangkuman: Mendefinisikan dan Menggunakan Enumerasi
Hal-hal penting:
- Enumerasi mendefinisikan sekumpulan konstanta bernama yang tetap dengan keamanan tipe
- values() melakukan iterasi pada semua konstanta; ordinal() memberikan indeks berbasis nol
- valueOf() mengonversi String menjadi konstanta yang cocok
- Gunakan == (bukan equals) untuk membandingkan instans enumerasi
- Enumerasi bekerja sangat baik dalam ekspresi switch untuk pengarahan yang menyeluruh
- Enumerasi dapat menerapkan interface untuk melampirkan perilaku pada setiap konstanta
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mendefinisikan dan Menggunakan Enum” gratis?
Ya — teks lengkap “Mendefinisikan dan Menggunakan 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 “Mendefinisikan dan Menggunakan Enum”?
Deklarasikan tipe enum, gunakan konstantanya, dan lakukan iterasi dengan values() serta ordinal(). 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 1 dari 4.
Berapa lama pelajaran “Mendefinisikan dan Menggunakan 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