Java Dersleri 16 – Enum Yapısı

Java da enum yapıları 1.5 versiyonuyla birlikte gelmiştir. Bu versiyondan önce enum gereksinimi static final int değişkenlerle giderilmekteydi. Bu yaklaşımın tip güvenliği yoktur yani enumlar herhangi bir int, double vs değerle karşılaştırılabilirler, herhangi bir int değere eklenebilirler. Bunun yanında grup olarak kullandığınız bu int değişkenleri sırayla gezemezsiniz. Oysa ki enumlarda bu aranan bir özelliktir. Bunun gibi bir kaç yan etkiden dolayı Java’nın 1.5 versiyonuyla birlikte enum’lar dile eklendi. Java enumları sınıflara benzemekle birlikte çoğu özelliği kısıtlanmıştır. Öncelikle basit bir Enum tanımı ve kullanımı görelim :

 enum AminoAsit{ALANIN,GLUTAMIN,PROLIN,SERIN};

Java’da Enum tanımlamak için enum anahtar kelimesi kullanılır. Daha sonra enum elemanları süslü parantez içinde yazılır. Şimdi bu örneği biraz daha geliştirelim ve enum için bir yapıcı (constructor) metod tanımlayalım :

 enum AminoAsit {
        ALANIN("apolar"), GLUTAMIN("polar"), PROLIN("nötür"), SERIN("nötür");
        public String polarite_;
        AminoAsit() {
        }
        AminoAsit(String polarite) {
            polarite_ = polarite;
        }
    };

Örneği biraz değiştirerek bir String alan yapıcı metodumuzu ekledik. Burada dikkat etmemiz gereken kural yapıcı metodumuzun public erişim seviyesinde olmaması. Enum’ların sınıflardan bir farkı yapıcı metodlarının public erişim seviyesinde olamamasıdır. Enum yapılarının sınıf yapısından bir diğer farkı ise Enum yapılarının herhangi bir sınıftan miras alamamasıdır. Bunun tersine Enum yapıları herhangi bir arayüzü gerçekleyebilirler yani şu kullanım geçerlidir :

interface Hidropatik {
        public double getHidropatiKatsayi();
    }
    enum AminoAsit implements Hidropatik {
        ALANIN("apolar") {
            @Override
            public double getHidropatiKatsayi() {
                return 1.8;
            }
        },
        GLUTAMIN("polar") {
            @Override
            public double getHidropatiKatsayi() {
                return -3.5;
            }
        },
        PROLIN("nötür") {
            @Override
            public double getHidropatiKatsayi() {
                return 0.0;
            }
        },
        SERIN("nötür") {
            @Override
            public double getHidropatiKatsayi() {
                return -0.8;
            }
        };
        public String polarite_;
        AminoAsit() {
        }
        AminoAsit(String polarite) {
            polarite_ = polarite;
        }
    };

Yukarıda tanımladığımız Enum’u nasıl kullanacağımızı görelim. Aşağıdaki örnekte tanımladığımız Enum’un tüm elemanlarına ulaşıyoruz:

 for (AminoAsit a : AminoAsit.values()) {
            System.out.println(a.name() + " " + a.polarite_ + " " + a.getHidropatiKatsayi());
        }

İlgili Yazılar:

  1. Java Dersleri 2 – Sınıf Kavramı ve Yapısı (Class Structure) JDK kurulumunu ve derleyici kullanımını öğrendikten sonra kod geliştirmeye...
  2. Java Dersleri 5 – Kalıtım (Inheritance) Bu derste Java’nın nesne yönelimli programlamanın temeli olan kalıtım(Inheritance) kavramını...
  3. Java Dersleri 6 – Arayüzler ve Gerçeklenmesi (Interface and Implementation) Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...
  4. Kd Ağacı (Kd Tree) Veri Yapısı Görselleştirmesi Aşağıdaki resme tıklayarak uygulamalı olarak kd ağaç veri yapısına değerler...
  5. Java Dersleri 4 – Erişim Denetleyicileri (Access Modifiers) Bu dersimizde Java’nın metodlar ve sınıflar üzerinde erişim kurallarını...

Fikrin geldiyse buraya yaz


[ Ctrl + Enter ]