Kotlin Enum Class
Bu blog, Enum sınıfının kullanımı için açıklamalar içermektedir.
Enum Sınıfı
Sabit olarak kullanacağımız seçenek kümesini temsil etmemiz gerektiğinde klasik bir seçim olarak bu sınıf tercih edilmektedir.
Nasıl Yani?
Hemen örnekle açıklayalım: Her yazılımda, proje içinde ihtiyaç duyulan belirli türler olur. Bu türler bir kullanıcı modülü için User, Admin vb. olabildiği gibi, cihaz türleri için de iOS, Android, Web değerleri olarak kullanılır.
Proje analizi yapılırken de örneğin platform seçimi yapmak istendiğinde Android platformu için 0 değerini, iOS platformu için 1 değerini atayalım. Geliştirme yapılma aşamasında verdiğimiz değerlere, aşağıdaki örnekteki gibi kıyaslar yaparız.
if(platformType==1)
{
//Android
}
else if(platformType==2)
{
//iOS
}
Enum Sınıfının Kullanımı
Örneğin, haftanın günlerini temsil edecek bir class tanımlaması şu şekildedir:
enum class Weekday{
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
Yukarıda verilen örneğe benzer, gelen kullanıcıların platformunun temsil edeceği class tanımlası şu şekildedir:
enum class Operator{
Android, iOS, WEB
}
Bir veri tabanı içerisine veri girişi yapılırken, String değeri yerine sabit değerler için kullanılacak bir Integer değeri koyulması daha mantıklı olacaktır. Böylelikle kontroller gerçekleştirilirken yukarıda belirtilen “if” kontrolü gibi işlemler kolaylıkla yapılabilsin.
Proje içerisinde kullanımı şu şekilde olabilmektedir:
enum class Operator(val type: Int) {
Android(1),
iOS(2),
Web(3)
}
İlgili sınıfla alakalı değer oluşturmak veya çağırmak için bir nesne aşağıda gösterildiği gibi çağrılamaz:
val operatorType = Operator()
Bunun yerine şu şekilde bir kod satırı yazılmalıdır:
val operatorType = Operator.Android
İlgili özelliklere de şu kod satırını kullanarak ulaşırız:
val operatorType = Operator.Android
print(operatorType.type) //prints "1"
Kolay bir şekilde gerekli tanımlamalarımızı gerçekleştirdik. Bunun için kontrolü nasıl gerçekleştirebiliriz derseniz şu şekilde yazacağımız kod satırı ile kontrolü gerçekleştirebiliriz:
val operatorType = Operator.Android
when(operatorType){
Operator.Android -> println("Android")
Operator.iOS -> println("iOS")
Operator.Web -> println("Web")
}
//prints "Android"
Tanımı yapılan sınıf içerisinde ki tüm değerlere ulaşmak için ise:
val operators = Operator.values()
for(c in operators)
println("${c.ordinal} : ${c.name} : ${c.type}")
//prints
0 : Android : 1
1 : iOS : 2
2 : Web : 3
Yukarıda belirtilen “ordinal” değeri ilgili sınıftaki değerin index olarak değerini vermektedir. “name” değeri ise sırayla orada tanımlı sabiti bize for döngüsü içerisinde gösterecektir.
Umarım blog, Enum classın farklı kullanımlarını daha iyi anlamanıza yardımcı olmuştur. Aklınıza takılan soruların cevabını almak isterseniz dilerseniz yorumlara yazabilirsiniz. Ayrıca Android’in vermiş olduğu https://kotlinlang.org/docs/ dokümandan bilgi alabilirsiniz.