Merhaba,
Enum konusunda bana yöneltilen bir soru neticesinde bu makaleyi yazma gereği duydum.
Bu makale Java ile Enum(Enumaration) kullanımı hakkında olacaktır.
Programlama dillerinde Enum kullanımı yaygındır. Enum,belirli değerleri sabit olarak tanımlamak için kullanılır.
Sabit olarak tanımlayacağımız değerler her türden olabilir. Yani bu noktada "object" kavramı devreye girecektir.
Dolayısıyla enum içersinde veri türleri,yapılandırıcılar(constructor) ve fonksiyonlar tanımlayabiliriz.
Böylece farklı yapılarda ve amaçla geliştirdiğimiz sınıfları(class) da enum içerisinde kullanabiliriz.
Aşağıda standart bir enum kullanımına yer verilmiştir.
public enum Standart {
ZERO,
ONE,
TWO,
UNKNOWN
}
public static void main(String[] args) {
System.out.println(Standart.ZERO);
System.out.println(Standart.ONE);
}
Çıktı:
ZERO
ONE
Yukarıda verilen örnek standart bir kullanımı ifade eder. En temel "enum" kullanımında öğretilen-öğrenilen örnektir.
Ancak enum kavramı tıpkı bir "class" kavramı gibi esnektir. Dolayısıyla class yapısında kullanabildiğimiz tüm esnekliği "enum" ile sergilemek mümkündür.
Aşağıda verilen örneği inceleyelim:
public enum WebSite {
/*
Enum içersinde tanımlanmış sabit değerlerin parametre aldığını görüyoruz.
İlk baktığımızda standart bir yapılandırıcı(constructor) kullanımına benzetebiliriz.
Ancak haksız sayılmayız. Çünkü enum içeriği tıpkı bir sınıf(class) gibi tasarlanmıştır.
Dolayısıyla "sabit" olarak belirlenmiş değerler aslında bir yapılandırıcı(constructor) modelini sergiler.
Bu durumda "GOOGLE" sabitine atanan "google" ve "www.google.com.tr" içeriği "WebSite" constructor'a gider.
Yani "GOOGLE" sabiti aslında 'WebSite("google","www.google.com.tr")' kullanımına eşdeğerdir.
Aynı şekilde diğer sabitler(FACEBOOK,DIJIBIL,...) aynı kullanımı ifade eder.
*/
GOOGLE("google","www.google.com.tr"),
FACEBOOK("facebook","www.facebook.com"),
DIJIBIL("dijibil","www.dijibil.com"),
KERIMFIRAT("kerimfirat","www.kerimfirat.blogspot.com");
String name;
String url;
WebSite(String _name,String _url) {
this.name = _name;
this.url = _url;
}
public String getName() {
return name;
}
public String getUrl(){
return url;
}
/*
* Standart Enum kullanımında değerler sabittir. Ancak bu şekilde genişletilmiş bir yapı,enum değerlerini
değiştirmemizi mümkün kılar.
Aşağıdaki fonksiyon bu iş için tasarlanmıştır.
*/
public void setName(String _name,String _url)
{
this.name = _name;
this.url = _url;
}
}
public static void main(String[] args) {
System.out.println(WebSite.GOOGLE.getName()+ "," +WebSite.GOOGLE.getUrl());
System.out.println(WebSite.FACEBOOK.getName()+ "," +WebSite.FACEBOOK.getUrl());
System.out.println(WebSite.DIJIBIL.getName()+ "," +WebSite.DIJIBIL.getUrl());
System.out.println(WebSite.KERIMFIRAT.getName()+ "," +WebSite.KERIMFIRAT.getUrl());
WebSite.GOOGLE.setName("GOOG", "google.com");
System.out.println(WebSite.GOOGLE.getName()+ "," +WebSite.GOOGLE.getUrl());
}
Çıktı:
google,www.google.com.tr
facebook,www.facebook.com
dijibil,www.dijibil.com
kerimfirat,www.kerimfirat.blogspot.com
GOOG,google.com
Yukarıda verilen örnekte görüldüğü gibi 'enum' içeriğini genişletebiliriz.
Böylece enum ile birlikte fonksiyon kullanabilir ve enum sabit tanımlamalar üzerinde farklı işlemler gerçekleştirebilir.
Aşağıda verilen örnekte enum içeriği dizi olarak alınmıştır:
public static void main(String[] args) {
for (WebSite content : WebSite.values()) {
System.out.println(content);
}
//farklı işlem:
System.out.println( WebSite.valueOf("GOOGLE"));
}
Çıktı:
GOOGLE
FACEBOOK
DIJIBIL
KERIMFIRAT
GOOGLE
İyi çalışmalar.
Hiç yorum yok:
Yorum Gönder