Sıfırlanabilirliği isMarkedNullable
ile kontrol edebilirsiniz. Aşağıdaki kod:
class MyClass(val nullable: Long?, val notNullable: MyClass)
MyClass::class.declaredMemberProperties.forEach {
println("Property $it isMarkedNullable=${it.returnType.isMarkedNullable}")
}
yazdırır:
Property val MyClass.notNullable: stack.MyClass isMarkedNullable=false
Property val MyClass.nullable: kotlin.Long? isMarkedNullable=true
alıntı (vurgu benim) documentation den: Kotlin tipleri için
, boş değer temsil izin anlamına gelir bu tür tarafından. Pratikte, bu, türün sonunda bir soru işareti ile bildirilen olduğu anlamına gelir. Kotlin olmayan tipler için, , bu türle bildirilen tür veya sembolün, javax.annotation.Nullable gibi çalışma zamanı korunan nullability ek açıklamayla eklenmiş olan olduğu anlamına gelir. bile isMarkedNullable
yanlıştır
Not tip değerleri hala null
olabilir.
fun <T> foo(t: T) {
// isMarkedNullable == false for t's type, but t can be null here
}
Eğer belgelere bir bağlantı sağlayabilir: Bir null üst sınırla birlikte tipi parametresi türüdür bu durum ortaya çıkabilir? –
@KirillRakhman ilk sırada var. – miensol
Üzgünüm, kaçırdım. –