- 15 Mar 2018
- 1,109
- 25
Kotlin Null Safety - Non-Null
Kotlin Null Safety Nedir?
Kotlin Null Safety, null değerlerden dolayı oluşabilecek tehlikeleri ortadan kaldırmak için geliştirilmiştir. Java'da null değerlerle işlem yapmaya çalıştığımız zaman çoğu zaman uygulama çöker. Ama eğer değerler güvenli bir şekilde null alabilseydi, çok daha rahat olurdu ve çökmelerin büyük oranda önüne geçilirdi. İşte Null Safety bu yüzden çok önemlidir.
Şimdi Kotlin'de nullable dediğimiz tanımlamalara bakalım
Bu kodu çalıştırdığımızda alacağımız sonuç uygulamanın çökmesi olacaktır. Şimdi ise nullable olarak tanımlayalım.
Kodu bu şekilde derlediğimiz zaman bir sorun çıkmayacaktır. Aynı şekilde sadece null değer atanan değişkenleri yazdırabiliriz
Sonuç yukarıda gördüğünüz gibi null olacaktır.
Peki ya değişkenlerle işlem yapmak istersek. Örneğin bir stringin uzunluğunu almak istiyoruz ama stringimiz nullable yani null değere sahip olabilir. Bu durumda ne yapmalıyız.
Bunun için null safety'i kullanmamız gerek.
Örnek kod;
Gördüğünüz gibi bize bu şekilde bir hata verdi
Şimdi null safety nasıl sağlanır ona bakalım.
1- Null durumu kontrolü
2- Güvenli Çağrı(Safe Call)
Gördüğünüz gibi Kotlin bizim için işleri oldukça kolaylaştırıyor. Sonuna soru işareti eklemek eğer null değilse yap anlamında
Bir örnek daha
Bu örnekte listede tutulacak verileri string nullable olarak belirttiğimiz için null olan 2. elemanı geçerek uygulamayı çökmekten kurtarır.
if(ornekDegisken != null) açıklamasının kısaltılmış hali
!! Operatörü
!! operatörü nullable değerlerin kesinlikle null olmadığını belirtmek için kullanılır
Örnek kullanım;
normalde println(a) yapsak hata verirdi ancak sonuna !! koymamız kesinlikle null olmadığını ve buna göre işlem yapılacağını ifade ediyor.
Benim tavsiyem bu kullanımı olabildiğince az kullanmak
Cast'lerde durum nasıl
Diyelim ki bir nullable integer'ımız var ve bizim bu integeri normal integera cast etmemiz lazım bunun için;
Sondaki soru işareti yine bize yardımcı oluyor
Yazım hatası yaptıysam ya da eksiğim veya yanlışım varsa affola, bildirmeyi unutmayın
Kotlin Temelleri: Kotlin Temelleri
Kotlin Null Safety Nedir?
Kotlin Null Safety, null değerlerden dolayı oluşabilecek tehlikeleri ortadan kaldırmak için geliştirilmiştir. Java'da null değerlerle işlem yapmaya çalıştığımız zaman çoğu zaman uygulama çöker. Ama eğer değerler güvenli bir şekilde null alabilseydi, çok daha rahat olurdu ve çökmelerin büyük oranda önüne geçilirdi. İşte Null Safety bu yüzden çok önemlidir.
Şimdi Kotlin'de nullable dediğimiz tanımlamalara bakalım
Kod:
var tht: String = "THT"
tht = null
Bu kodu çalıştırdığımızda alacağımız sonuç uygulamanın çökmesi olacaktır. Şimdi ise nullable olarak tanımlayalım.
Kod:
var tht: String? = "THT"
tht = null
Kodu bu şekilde derlediğimiz zaman bir sorun çıkmayacaktır. Aynı şekilde sadece null değer atanan değişkenleri yazdırabiliriz
Kod:
var deneme: String? ""
deneme = null
println(deneme)
Sonuç yukarıda gördüğünüz gibi null olacaktır.
Peki ya değişkenlerle işlem yapmak istersek. Örneğin bir stringin uzunluğunu almak istiyoruz ama stringimiz nullable yani null değere sahip olabilir. Bu durumda ne yapmalıyız.
Bunun için null safety'i kullanmamız gerek.
Örnek kod;
Kod:
var tht2: String = "THT2"
var deneme2: String? = null
Kod:
val length1 = tht2.length // Bu kod düzgünce çalışacaktır çünkü null değer alamaz.
val length2 = deneme2.length // Bu kod daha derlenmeden hata alırız çünkü null safety'i sağlamadık.
Gördüğünüz gibi bize bu şekilde bir hata verdi
Şimdi null safety nasıl sağlanır ona bakalım.
1- Null durumu kontrolü
Kod:
var stringA: String? = null
val aLength = if(a != null) stringA.length else -1
2- Güvenli Çağrı(Safe Call)
Kod:
val smt: String? = null
println(smt?.length)
Gördüğünüz gibi Kotlin bizim için işleri oldukça kolaylaştırıyor. Sonuna soru işareti eklemek eğer null değilse yap anlamında
Bir örnek daha
Kod:
val thtList: List<String?> = listOf("Ego1st", null)
for(user in thtList){
user?.let {
println(user)
}
}
Bu örnekte listede tutulacak verileri string nullable olarak belirttiğimiz için null olan 2. elemanı geçerek uygulamayı çökmekten kurtarır.
if(ornekDegisken != null) açıklamasının kısaltılmış hali
Kod:
val smt2: String? = null
val l22 = smt2.length ?: //null değil ise
!! Operatörü
!! operatörü nullable değerlerin kesinlikle null olmadığını belirtmek için kullanılır
Örnek kullanım;
Kod:
val a: Int? = null
if(a != null){
println(a!!)
}
normalde println(a) yapsak hata verirdi ancak sonuna !! koymamız kesinlikle null olmadığını ve buna göre işlem yapılacağını ifade ediyor.
Benim tavsiyem bu kullanımı olabildiğince az kullanmak
Cast'lerde durum nasıl
Diyelim ki bir nullable integer'ımız var ve bizim bu integeri normal integera cast etmemiz lazım bunun için;
Kod:
val a: Int? = null
...
val b: Int = a as? Int
Sondaki soru işareti yine bize yardımcı oluyor
Yazım hatası yaptıysam ya da eksiğim veya yanlışım varsa affola, bildirmeyi unutmayın
Kotlin Temelleri: Kotlin Temelleri