2016-10-27 27 views

cevap

8

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 
} 
+0

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? –

+0

@KirillRakhman ilk sırada var. – miensol

+0

Üzgünüm, kaçırdım. –

İlgili konular