0Pricing
Java Academy · Pelajaran

Enum dengan Field dan Method

Tambahkan perilaku ke enum.

Enum dengan Field dan Method 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.

Enum Adalah Kelas Lengkap

enum Java jauh lebih dari sekadar daftar konstanta. Enum merupakan kelas nyata yang instansnya adalah konstanta-konstanta tersebut.

Artinya, enum dapat memiliki bidang, konstruktor, dan metode seperti kelas lainnya.

public class Main {
    enum Direction { NORTH, SOUTH, EAST, WEST }
    public static void main(String[] args) {
        Direction d = Direction.NORTH;
        System.out.println(d + " is a " + d.getClass().getSuperclass().getSimpleName());
    }
}

Menambahkan Bidang

Anda dapat melampirkan data ke setiap konstanta. Deklarasikan bidang final dan konstruktor, lalu teruskan nilai dalam tanda kurung setelah setiap konstanta.

public class Main {
    enum Planet {
        EARTH(9.81), MARS(3.71), JUPITER(24.79);
        private final double gravity;
        Planet(double gravity) { this.gravity = gravity; }
        double gravity() { return gravity; }
    }
    public static void main(String[] args) {
        System.out.println("Mars gravity: " + Planet.MARS.gravity());
    }
}

Konstruktor Enum Bersifat Privat

Konstruktor enum secara implisit bersifat private. Anda tidak dapat memanggil new pada enum; JVM membuat konstanta-konstanta tersebut sekali saat kelas dimuat.

Hal ini menjamin sekumpulan instans yang tetap dan berhingga.

public class Main {
    enum Coin {
        PENNY(1), NICKEL(5), DIME(10), QUARTER(25);
        private final int cents;
        Coin(int cents) { this.cents = cents; }
        int cents() { return cents; }
    }
    public static void main(String[] args) {
        int total = Coin.QUARTER.cents() + Coin.DIME.cents();
        System.out.println("Total cents: " + total);
    }
}

Beberapa Bidang

Sebuah konstanta dapat membawa beberapa bagian data. Di sini setiap planet menyimpan massa dan radiusnya.

public class Main {
    enum Planet {
        EARTH(5.976e24, 6.37814e6),
        MARS(6.421e23, 3.3972e6);
        private final double mass, radius;
        Planet(double mass, double radius) { this.mass = mass; this.radius = radius; }
        double surfaceGravity() {
            final double G = 6.67300E-11;
            return G * mass / (radius * radius);
        }
    }
    public static void main(String[] args) {
        System.out.printf("Earth g = %.2f%n", Planet.EARTH.surfaceGravity());
    }
}

Metode Instans

Metode enum dapat menghitung hasil dari bidang milik konstantanya sendiri, seperti metode instans biasa.

public class Main {
    enum Size {
        SMALL(8), MEDIUM(12), LARGE(16);
        private final int ounces;
        Size(int ounces) { this.ounces = ounces; }
        int ounces() { return ounces; }
        double liters() { return ounces * 0.0295735; }
    }
    public static void main(String[] args) {
        System.out.printf("Large = %.2f L%n", Size.LARGE.liters());
    }
}

Nama bawaan dan ordinal

Setiap enumerasi mendapatkan name() (pengidentifikasi tepat) dan ordinal() (posisinya yang berbasis nol).

Sebaiknya simpan data Anda sendiri daripada mengandalkan ordinal(), yang akan bermasalah jika konstanta diurutkan ulang.

public class Main {
    enum Day { MON, TUE, WED }
    public static void main(String[] args) {
        for (Day d : Day.values()) {
            System.out.println(d.name() + " -> ordinal " + d.ordinal());
        }
    }
}

values dan valueOf

Kompilator menghasilkan dua pembantu statis:

  • values() mengembalikan larik semua konstanta.
  • valueOf(String) mencari konstanta berdasarkan nama dan melempar pengecualian jika tidak ditemukan.
public class Main {
    enum Status { ACTIVE, PAUSED, CLOSED }
    public static void main(String[] args) {
        System.out.println("count: " + Status.values().length);
        Status s = Status.valueOf("PAUSED");
        System.out.println("parsed: " + s);
    }
}

Menimpa toString

Anda dapat menimpa toString() untuk memberikan label yang lebih mudah dipahami, sambil tetap mempertahankan nama konstanta untuk kode.

public class Main {
    enum Priority {
        LOW, MEDIUM, HIGH;
        @Override public String toString() {
            return name().charAt(0) + name().substring(1).toLowerCase();
        }
    }
    public static void main(String[] args) {
        for (Priority p : Priority.values()) System.out.println(p);
    }
}

Enumerasi dalam switch

Enumerasi bekerja dengan baik dalam switch. Dengan ekspresi switch modern, Anda mendapatkan pemeriksaan kelengkapan dan tidak ada penerusan eksekusi ke kasus berikutnya.

public class Main {
    enum Traffic { RED, YELLOW, GREEN }
    static String action(Traffic t) {
        return switch (t) {
            case RED -> "Stop";
            case YELLOW -> "Slow down";
            case GREEN -> "Go";
        };
    }
    public static void main(String[] args) {
        System.out.println(action(Traffic.GREEN));
    }
}

Peta Pencarian Statis

Pola yang umum adalah peta statis dari suatu bidang kembali ke konstanta, yang dibuat sekali dalam penginisialisasi statis.

import java.util.HashMap;
import java.util.Map;

public class Main {
    enum Op {
        PLUS("+"), MINUS("-");
        private final String symbol;
        Op(String symbol) { this.symbol = symbol; }
        private static final Map<String, Op> BY_SYMBOL = new HashMap<>();
        static { for (Op o : values()) BY_SYMBOL.put(o.symbol, o); }
        static Op fromSymbol(String s) { return BY_SYMBOL.get(s); }
    }
    public static void main(String[] args) {
        System.out.println(Op.fromSymbol("-"));
    }
}

Enumerasi Mengimplementasikan Antarmuka

Enumerasi dapat mengimplementasikan antarmuka, sehingga konstanta dapat digunakan dalam kode serbaguna.

public class Main {
    interface Describable { String describe(); }
    enum Animal implements Describable {
        DOG, CAT;
        public String describe() { return "A " + name().toLowerCase(); }
    }
    public static void main(String[] args) {
        Describable d = Animal.DOG;
        System.out.println(d.describe());
    }
}

Pemeriksaan Cepat

Uji pemahaman Anda tentang bidang enumerasi.

Ringkasan

Anda telah mempelajari bahwa enumerasi adalah kelas lengkap:

  • Konstanta dapat menyimpan anggota data yang ditetapkan melalui konstruktor privat.
  • Enumerasi dapat memiliki metode instans dan menimpa toString().
  • values() dan valueOf() dibuat untuk Anda.
  • Enumerasi dapat mengimplementasikan antarmuka dan sebaiknya menggunakan anggota data daripada ordinal().

Berikutnya, perilaku per konstanta dengan metode abstract.

public class Main {
    enum Greeting { HELLO; String text() { return "Hi"; } }
    public static void main(String[] args) {
        System.out.println("Enum fields recap: " + Greeting.HELLO.text());
    }
}

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Enum dengan Field dan Method” gratis?

Ya — teks lengkap “Enum dengan Field dan Method” 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 “Enum dengan Field dan Method”?

Tambahkan perilaku ke enum. 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 “Enum dengan Field dan Method” 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

  1. Enum dengan Field dan Method
  2. Method Abstrak dalam Enum
  3. EnumSet
  4. EnumMap
← Kembali ke Java Academy