Java'da Enum sabit bir dizi sabit içeren bir veri türüdür.
Haftanın günleri (PAZARTESİ, SALI, ÇARŞAMBA, PERŞEMBE, CUMA ve CUMARTESİ), yönler (KUZEY, GÜNEY, DOĞU ve BATI), mevsim (İLKBAHAR, YAZ, KIŞ ve SONBAHAR veya SONBAHAR) için kullanılabilir. ), renkler (KIRMIZI, SARI, MAVİ, YEŞİL, BEYAZ ve SİYAH) vb. Java adlandırma kurallarına göre, tüm sabitlerin büyük harflerle yazılması gerekir. Yani, büyük harflerle numaralandırma sabitlerimiz var.
Java Numaralandırmaları, sabit bir sabitler kümesine (değişmeyen bir değişken) sahip sınıflar olarak düşünülebilir. Java numaralandırma sabitleri örtülü olarak statik ve kesindir. JDK 1.5'ten beri mevcuttur.
java boş kontrolü
Enum'lar, sınıflar gibi kendi veri türümüzü oluşturmak için kullanılır. Sıralama veri türü (Numaralandırılmış Veri Türü olarak da bilinir), Java'da bir numaralandırmayı tanımlamak için kullanılır. C/C++'dan farklı olarak Java'da enum daha fazladır güçlü . Burada sınıf içinde veya sınıf dışında bir numaralandırma tanımlayabiliriz.
Java Enum dahili olarak miras alır Numaralandırma sınıfı yani başka bir sınıfı miras alamaz ancak birçok arayüzü uygulayabilir. Java enum'da alanlarımız, yapıcılarımız, yöntemlerimiz ve ana yöntemlerimiz olabilir.
Java Enum için hatırlanması gereken noktalar
- Enum, tür güvenliğini artırır
- Enum anahtarda kolaylıkla kullanılabilir
- Enum geçilebilir
- Enum'da alanlar, yapıcılar ve yöntemler bulunabilir
- Enum birçok arayüzü uygulayabilir ancak hiçbir sınıfı genişletemez çünkü dahili olarak Enum sınıfını genişletir
Basit Java Enum Örneği
class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }}Şimdi Test Edin
Çıktı:
WINTER SPRING SUMMER FALL
Java enum'un value(), valueOf() ve ordinal() yöntemlerini kullandığımız başka bir Java enum örneğini görelim.
class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }}
Çıktı:
WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2
Not: Java derleyicisi, derleme zamanında enum'a dahili olarak value(), valueOf() ve ordinal() yöntemlerini ekler. Dahili olarak numaralandırma için statik ve son bir sınıf oluşturur.
Enumdaki value() yönteminin amacı nedir?
Java derleyicisi bir numaralandırma oluşturduğunda dahili olarak value() yöntemini ekler. Values() yöntemi, numaralandırmanın tüm değerlerini içeren bir dizi döndürür.
Enumdaki valueOf() yönteminin amacı nedir?
Java derleyicisi bir numaralandırma oluşturduğunda dahili olarak valueOf() yöntemini ekler. ValueOf() yöntemi, verilen sabit numaralandırmanın değerini döndürür.
youtube'dan vlc indir
Numaralandırmadaki ordinal() yönteminin amacı nedir?
Java derleyicisi bir numaralandırma oluşturduğunda dahili olarak ordinal() yöntemini ekler. ordinal() yöntemi, enum değerinin dizinini döndürür.
Java Enum'u Tanımlama
Enum, sınıfa benzediğinden sınıfın içinde veya dışında tanımlanabilir. Numaralandırma sabitlerinin sonundaki noktalı virgül (;) isteğe bağlıdır. Örneğin:
enum Season { WINTER, SPRING, SUMMER, FALL }
Veya,
enum Season { WINTER, SPRING, SUMMER, FALL; }
Java enum'un her iki tanımı da aynıdır.
Java Enum Örneği: Sınıfın dışında tanımlandı
enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }}Şimdi Test Edin
Çıktı:
WINTER
Java Enum Örneği: Sınıf içinde tanımlandı
class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }}Şimdi Test Edin
Çıktı:
WINTER
Java Enum Örneği: Enum içindeki ana yöntem
Enum'un içine main() yöntemini koyarsanız, enum'u doğrudan çalıştırabilirsiniz.
enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } }
Çıktı:
Java dizi sıralaması
WINTER
Enum sabitlerine belirli değerlerin başlatılması
Numaralandırma sabitleri 0, 1, 2, 3 vb. ile başlayan bir başlangıç değerine sahiptir. Ancak alanları ve yapıcıları tanımlayarak enum sabitlerine özgü değeri başlatabiliriz. Daha önce de belirtildiği gibi Enum'da alanlar, yapıcılar ve yöntemler bulunabilir.
Enum sabitlerine başlangıç değeri belirtme örneği
class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }}Şimdi Test Edin
Çıktı:
WINTER 5 SPRING 10 SUMMER 15 FALL 20
Enum türünün yapıcısı özeldir. Özel derleyiciyi dahili olarak bildirmezseniz özel kurucu oluşturur.
enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } }
Yukarıdaki enum türü örneği için derleyici tarafından oluşturulan dahili kod
final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } }
Enum örneğini new anahtar kelimesiyle oluşturabilir miyiz?
Hayır, çünkü yalnızca özel kurucuları içeriyor. |
Enum'da soyut bir yönteme sahip olabilir miyiz?
Evet elbette! soyut yöntemlerimiz olabilir ve bu yöntemlerin uygulanmasını sağlayabiliriz.
Bir switch ifadesinde Java Enum
Verilen örnekte olduğu gibi switch ifadesine enum uygulayabiliriz:
Enum'u bir switch ifadesine uygulama örneği
class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }}Şimdi Test Edin
Çıktı:
monday