2016-10-27 83 views

Odpowiedz

8

Możesz sprawdzić czy nullability jest z isMarkedNullable. Poniższy kod:

class MyClass(val nullable: Long?, val notNullable: MyClass) 
MyClass::class.declaredMemberProperties.forEach { 
    println("Property $it isMarkedNullable=${it.returnType.isMarkedNullable}") 
} 

wypisze:

Property val MyClass.notNullable: stack.MyClass isMarkedNullable=false 
Property val MyClass.nullable: kotlin.Long? isMarkedNullable=true 

Fragment documentation (Kopalnia nacisk):

Dla typów Kotlin, oznacza to, że wartość zerowa może być reprezentowany według tego typu. W praktyce oznacza to, że typ został oznaczony jako ze znakiem zapytania na końcu. W przypadku typów innych niż Kotlin oznaczenie oznacza typ lub symbol, który został zadeklarowany z tym typem, a jest on opatrzony adnotacją nullability z zachowaniem środowiska wykonawczego, taką jak javax.annotation.Nullable.

Należy pamiętać, że nawet jeśli isMarkedNullable jest fałszywa, wartości typu mogą nadal null. Może się to zdarzyć, jeśli jest to typ parametru type z pustych górna granica:

fun <T> foo(t: T) { 
    // isMarkedNullable == false for t's type, but t can be null here 
} 
+0

można podać link do dokumentacji? –

+0

@KirillRakhman jest tam w pierwszym wierszu. – miensol

+0

Przepraszam, spóźniłem się. –