Inline class nedir ?
Oca 05, 2022hamurcuabi
2 Yorum
Daha önce hiç value-based class diye bir şey duydunuz mu? Aslında olay çok basit ama çok etkili haydi beraber inceleyelim 😎
Senaryomuz şöyle,
Bir çalışanımız var ve bunun bir Id 'si var. Bu Id ile para yolladığımız bir func yazalım.
fun sendMoneyToUser(money: Int, userId: Int) { // Para gönderiliyor..}
val userId = 1
// dikkat edin userId ve paranın yerlerini yanlış yazdım :(
sendMoneyToUser(userId, 1_000)
Yukardaki durumun korunabilimesi gerekiyor. Çünkü yanlış yazmama rağmen çalışabilmesi ve başka bir çalışana para gitmesi çok olasıdır. Peki nasıl çözebiliriz ?
// inline class
@JvmInline
value class UserId(val id: Int)
fun sendMoneyToUser(salary: Int, UserId: Int) { // Para gönderiliyor..}
val userId = UserId(1)
sendMoneyToUser(userId, 1_000) // Compile time error. Burası çalışmaz bile :)
Yukardaki koda bakınca aslında çok basitçe wrapper bir class yarattık.
-
Sadece bir property ile primary constructer'ı olabilir !
-
const val olarak kullanılamazlar!
-
init constructer'ları vardır ve require özelliği ile run time validation yapılabilir.
Daha fazla detay için https://kotlinlang.org/docs/inline-classes.html sayfasını ziyaret edebilirsiniz. Sağlıklı günler
class inline kotlin