Java Enum

dogukanhan tarafından tarihinde yayınlandı

Enum bir veri tipidir ve sınırlı sayıdaki sabitleri tutmak için kullanılır. Enum aslında bir java sınıfı ve onun nesnelerinin tanımlandığı bütünleşik bir yapı olarak düşünülebilir. Enum tanımlamasından sonra, enum üzerinden yeni nesne yaratılamaz veya yeni bir enum sabiti oluşturulamaz.

Enum’un en iyi kullanımı günler için olabilir. Enum ismi girildikten sonra geçerli enum değerleri/sabitleri sırası ile yazılmalıdır.

    enum Gun{
        PAZARTESI,SALI,CARSAMBA,PERSEMBE,CUMA
    }

Örnek bir atama işlemi aşağıda verilmiştir. Bu atama işleminde tanımlanmış enumlar dışında bir değer ataması yapılamaz örneğin Cumaretesi ataması yapamayız.

Gun calismaGunu = Gun.PAZARTESI;

Gun enum’una artık Cumartesi ve Pazar eklenemez bunu yapılabilmesinin tek yolu yine tanımlandığı yerde eklemek olucaktır.

    enum Gun{
        PAZARTESI,SALI,CARSAMBA,PERSEMBE,CUMA,CUMARTESI,PAZAR
    }

Enum’un sağladığı özelliklerden birisi type-safety yani yazım güvencesidir, yazdığımız kodun derleyici tarafından denetlenebilmesini arttırmış oluruz buda bize bir güvence kazandırır. Yukarıdaki gün örneğinin enum olmadan yapılmasını görelim

Diyelimki günleri aşağıdaki şekilde String ifadeler ile tanımladık.

    String pazartesi = "PAZARTESI",
            sali = "SALI", carsamba = "CARSAMBA";

Bir gün değişkenine atama yapacağımız zaman eşittir ile pazartesiyi atayabiliriz fakat oluşturduğumuz değişken String değişkeni olduğundan dolayı bu değişkene farklı String değerleri atanması derleyici tarafından sorun teşkil edilmez

String calismaGunu = pazartesi;
String calismaGunu = "pazartesileri"

Enumlar switch-case ifadeleri içerisinde çok rahat kullanılırlar.

Bütün enum değerleri bir array içerisinde çağrılıp kullanılabilir. Enumlar içerisinde yer alan values() metotu, sabitleri primitive array şeklinde döndürür.

        for (int i = 0; i < Gun.values().length; i++) {
            System.out.println(Gun.values()[i]);
        }

Enumlar constructer, metot ve değişken barındırabilir

    enum Gun {
        PAZARTESI(1), SALI(2), CARSAMBA(3), PERSEMBE(4), CUMA(5);
        private int deger;

        Gun(int deger) {
            this.deger = deger;
        }

        int getDeger(){
            return this.deger;
        }
    }

Enumlar interface implement edebilir.

    interface IntValue{
        int getDeger();
    }

    enum Gun implements IntValue{
        PAZARTESI(1), SALI(2), CARSAMBA(3), PERSEMBE(4), CUMA(5);
        private int deger;

        Gun(int deger) {
            this.deger = deger;
        }

        public int getDeger(){
            return this.deger;
        }
    }

0 yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir