0Pricing
Java Academy · Ders

Alan ve Yöntem İçeren Enum'lar

Enum'lara davranış ekleyin

Alan ve Yöntem İçeren Enum'lar, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.

Numaralandırmalar Eksiksiz Sınıflardır

Bir Java enum sabitlerin listesinden çok daha fazlasıdır. Sabitleri örnekleri olan gerçek bir sınıftır.

Bu, numaralandırmaların diğer sınıflar gibi alanlara, oluşturuculara ve yöntemlere sahip olabileceği anlamına gelir.

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());
    }
}

Alan Ekleme

Her sabite veri ekleyebilirsiniz. Bir final alan ve oluşturucu tanımlayın, ardından her sabitten sonra parantez içinde değerleri aktarın.

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());
    }
}

Numaralandırma Oluşturucusu Özeldir

Numaralandırma oluşturucuları örtük olarak private olur. Bir numaralandırma üzerinde new çağıramazsınız; JVM, sınıf yüklenirken sabitleri bir kez oluşturur.

Bu, sabit ve sonlu bir örnek kümesini garanti eder.

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);
    }
}

Birden Çok Alan

Bir sabit birden çok veri parçası taşıyabilir. Burada her gezegen hem kütlesini hem de yarıçapını saklar.

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());
    }
}

Örnek Yöntemleri

Numaralandırma yöntemleri, tıpkı normal örnek yöntemleri gibi sonuçları sabitin kendi alanlarından hesaplayabilir.

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());
    }
}

Yerleşik name ve ordinal

Her numaralandırma türü name() (tam tanımlayıcı) ve ordinal() (sıfır tabanlı konumu) alır.

Sabitlerin sırasını değiştirirseniz bozulacağı için ordinal() değerine güvenmek yerine kendi verilerinizi saklamayı tercih edin.

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 ve valueOf

Derleyici iki statik yardımcı yöntem oluşturur:

  • values() tüm sabitlerin bulunduğu bir dizi döndürür.
  • valueOf(String) ada göre bir sabit arar; bulamazsa hata fırlatır.
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);
    }
}

toString Öğesini Geçersiz Kılma

Kod için sabit adını korurken daha anlaşılır etiketler vermek üzere toString() yöntemini geçersiz kılabilirsiniz.

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);
    }
}

Seçim Yapısında Numaralandırma Türleri

Numaralandırma türleri seçim yapılarıyla sorunsuz çalışır. Modern seçim ifadeleriyle tüm durumların ele alınıp alınmadığını denetleyebilir ve durumların yanlışlıkla birbirine geçmesini önleyebilirsiniz.

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));
    }
}

Statik Map Aramaları

Yaygın bir yaklaşım, bir alandan sabite geri dönüş sağlayan ve statik bir başlatıcıda bir kez oluşturulan statik bir Map kullanmaktır.

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("-"));
    }
}

Numaralandırma Türleri Arayüzleri Uygular

Bir numaralandırma türü bir arayüzü uygulayabilir ve sabitlerin genel amaçlı koda eklenmesini sağlayabilir.

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());
    }
}

Hızlı Kontrol

Numaralandırma türü alanları hakkındaki anlayışınızı sınayın.

Özet

Numaralandırma türlerinin tam kapsamlı sınıflar olduğunu öğrendiniz:

  • Sabitler, özel bir oluşturucu aracılığıyla ayarlanan alanları barındırabilir.
  • Numaralandırma türleri örnek yöntemlerine sahip olabilir ve toString() yöntemini geçersiz kılabilir.
  • values() ve valueOf() sizin için oluşturulur.
  • Numaralandırma türleri arayüzleri uygulayabilir; ordinal() yerine alanları tercih etmelisiniz.

Sırada, soyut yöntemlerle sabite özgü davranış var.

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());
    }
}

Sıkça Sorulan Sorular

“Alan ve Yöntem İçeren Enum'lar” dersi ücretsiz mi?

Evet — “Alan ve Yöntem İçeren Enum'lar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.

“Alan ve Yöntem İçeren Enum'lar” dersinde ne öğreneceğim?

Enum'lara davranış ekleyin Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Alan ve Yöntem İçeren Enum'lar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Alan ve Yöntem İçeren Enum'lar
  2. Enum'larda Soyut Yöntemler
  3. EnumSet
  4. EnumMap
← Java Academy Sayfasına Dön