Bir lateinit
özelliğinin başlatılmış olup olmadığını kontrol etmeye çalışıyorum.
Kotlin 1.2'de bunun için isInitialized
yöntemine sahibiz. Bunu, lateinit özelliğinin bildirildiği sınıfta yaptığımda çalışır. arasındaisInitialized - lateinit var destek alanı bu noktada erişilemiyor
Taban alanını 'lateinit var foo: Bar' ı aşağıdaki uyarıyı almak başka sınıftan bu aramaya çalıştığınızda Ama (haydi bu noktada
Benim modelim sınıf erişilebilir değil Person
) Java ile yazılmış demek
diğer iki sınıfları (en Test1
ve Test2
) KOTLIN
Örnek:
class Test1 {
lateinit var person: Person
fun method() {
if (::person.isInitialized) {
// This works
}
}
}
-
class Test2 {
lateinit var test1: Test1
fun method() {
if (test1::person.isInitialized) {
// Error
}
}
}
bu çalışma almak için şansı var mı?
Geçerli çözümüm, Test1'de isInitialized
değerini person
özelliğinden döndüren bir yöntem yapmaktır.
fun isPersonInitialized(): Boolean = ::person.isInitialized
//in Test2:
if (test1.isPersonInitialized()) {
// Works
}
ben cevabı bilmiyorum. Ama niçin niçin ''InInitialized' kullanılır? 'Lateinit' gösterisi her zaman nesne kullanımdan önce başlatılır. – Joshua
@Eledgy kodunuz derlenmiyor. If ifadesini doğrudan bir sınıf gövdesine koyamazsınız. init bloğu içine sarmayı unuttuğunu düşünüyorum. Biliyorum, bu inital probleminizi çözmez. –
@Joshua Kişinin henüz başlatılamadığı bir durum var. – ElegyD