Halil Özel

Nov 29, 2021

3 min read

Kotlin Sealed Class

Selamlar, bugün sizlerle Kotlin dilinde işimizi kolaylaştıran bir class olan Sealed’ı öğreneceğiz. Kahveleriniz ☕️ hazırsa haydi başlayalım. 🥳

Kotlin’in güçlü 💪 özelliklerinden biri olan Sealed Class, Java’da ise version 15 ile desteklenmeye başladı. Java’da ve Kotlin’de kullanılan Enum Class’ların üst seviye hale getirilmiş durumuna Sealed class olarak adlandırabiliriz.

  • Sealed class abstract’tır. Nesnesi oluşturulmaz.

Abstract: Nesne Yönelimli Programlamanın demirbaşlarından biridir. Interface’lerin skillerine sahiptir. State tutabilme özelliğide öne çıkan özellikleri arasındadır.

  • Sealed class’ın private constructor metodu bulunmaz.

Constructor: Class’tan üretilen objelerin değişkenlerinin değerlerini belirtmek için kullanılan special fonksiyonlardır.

  • Sealed class ile Sub class aynı dosyada tanımlanması gerekir.

Kotlin’le alakalı detaylı bilgi için blog yazısını inceleyebilirsiniz. 👇🏻

Sealed Class ile ilgili örneğe geçmeden önce Enum Class’ların bize neden yeterli olmadığını öğrenmek için bir senaryo üzerinden gideceğiz. Akabinde aynı işlemi Sealed Class ile nasıl yaparız bunu inceleyeceğiz. 🔎

Kotlin

Enum: Genellikle sabit değerlerden oluşan yapılardır. Tanımlanan int, string tipteki değerler kolayca diğer classlar tarafından kullanılabilir.

🎬 Senaryo: Sunucu tarafından alınan verilerin durumlarını handle etmek.

2 şekilde Enum class tanımlayıp kullanabiliriz.

1️⃣ Constructor kullanmadan direkt yalın halde parametresiz şekilde kullanılır.

2 ayrı function tanımlayıp kullanmamız gerekir. Bu durumda pek efektif değil.

2️⃣ Bu yolda ise Enum Class’a constructor tanımlayarak data tutmasını söylüyoruz.

Bela başımızı bırakmıyor bu seferde 🤓 veriler her koşulda bizlere gelmiyor. SUCCESS durumu bize gelip, handle edebiliyoruz. ERROR ve LOADING koşullarında ise anlık durumları belirtiliyor. 2.adımda da her koşula ayrı parametre dönmemesi bizim elimizi kolumuzu bağlıyor.

Yani şimdi 2 farklı yolu denedik Enum Classiçinde istediğimizi elde edemedik. 😬

Ne yapmamız gerekir dediğimiz noktada bizim imdadımıza Sealed Class yetişiyor. Ve sana nasıl yardımcı olurum edasıyla yaklaşıyor. 😇

Error ve Loading durumlarında veri alınmadığı için parametre tanımı yapılmadı. Singleton olarak tutmak içinde object kullandık. Eğer veriler alacaksanız class tipinde tanımlayıp kullanabilirsiniz. data class tanımında constructor parametresini ekleyerek datayı kolayca alabileceğiz.

Success kısmında verilere kolayca erişip kullanabiliyoruz.

is veya !isoperatörünü kullanarak, bloğun içinde argüman olarak iletilen değişkenin türünü kontrol edebiliriz.

Detaylı bilgi için inceleyebilirsiniz:

Bir yazımızın daha sonuna geldik teşekkür eder, herkese keyifli kodlamalar dilerim. 💻

Android Developer 👨🏻‍💻

Love podcasts or audiobooks? Learn on the go with our new app.