Lewati ke isi

๐ŸŽ–๏ธ Enum (Enumerasi) dalam Java

Enum (singkatan dari enumeration) adalah tipe data khusus di Java yang memungkinkan kita menyimpan sekumpulan nilai tetap (konstanta) dalam satu blok.

Sederhananya:

enum = sekumpulan final static value yang dikemas rapi


๐Ÿ”ง Contoh Penggunaan Enum

public enum Role {
    ADMIN,
    MANDOR,
    PEKERJA
}
````

Cara menggunakannya:

```java
public class User {
    Role role;

    public User(Role role) {
        this.role = role;
    }

    public void printRole() {
        System.out.println("Peran: " + role);
    }

    public static void main(String[] args) {
        User u = new User(Role.MANDOR);
        u.printRole(); // Output: Peran: MANDOR
    }
}

๐Ÿ“‹ Kelebihan Enum

  • Nilai enum tidak bisa berubah (konstanta)
  • Kode jadi lebih aman, tidak rawan typo
  • Bisa digunakan dalam switch-case
  • Enum di Java adalah class khusus, bisa punya method & constructor

๐ŸŽฏ Enum dalam switch

public class ContohSwitch {
    public static void main(String[] args) {
        Role role = Role.PEKERJA;

        switch (role) {
            case ADMIN:
                System.out.println("Akses penuh");
                break;
            case MANDOR:
                System.out.println("Akses manajemen tim");
                break;
            case PEKERJA:
                System.out.println("Akses lihat data pribadi");
                break;
        }
    }
}

๐Ÿง  Enum dengan Constructor & Method

public enum Grade {
    PEMOTONG(0.4),
    PENYUSUN(0.35),
    PENGUTIP(0.25);

    private final double persentase;

    Grade(double persentase) {
        this.persentase = persentase;
    }

    public double getPersentase() {
        return persentase;
    }
}

Penggunaan:

System.out.println("Pemotong: " + Grade.PEMOTONG.getPersentase());
// Output: Pemotong: 0.4

๐Ÿ“Œ Best Practice Enum

  • Gunakan enum untuk data tetap & terbatas
  • Enum membuat kode lebih bersih, aman, dan terstruktur
  • Cocok untuk: status, kategori, role, jenis pekerjaan, level prioritas, dll

๐Ÿงช Studi Kasus: Status Panen

public enum StatusPanen {
    TERJADWAL,
    SELESAI,
    DITUNDA
}
public class Panen {
    StatusPanen status;

    public Panen(StatusPanen status) {
        this.status = status;
    }

    public void cekStatus() {
        switch (status) {
            case TERJADWAL:
                System.out.println("Panen akan dilakukan sesuai jadwal.");
                break;
            case SELESAI:
                System.out.println("Panen telah selesai.");
                break;
            case DITUNDA:
                System.out.println("Panen ditunda karena cuaca.");
                break;
        }
    }
}

๐Ÿ“Œ Kesimpulan

Konsep Penjelasan
enum Tipe data untuk kumpulan nilai tetap
Gunanya Menghindari hardcode string/int dalam logic
Bisa Digunakan dalam switch, punya method & constructor

โžก๏ธ Selanjutnya: Inner Class (Class dalam Class)