2016-10-27 38 views

回答

8

您可以用isMarkedNullable检查空性。以下代码:

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

将打印:

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

摘自documentation(重点煤矿):

对于科特林类型,这意味着空值允许是 表示通过这种类型。在实践中,这意味着类型是 最后用问号声明。对于非Kotlin类型,其 表示使用此类型声明的类型或符号 使用运行时保留的可空性注释进行了注释,如 javax.annotation.Nullable。

请注意,即使isMarkedNullable是假的,该类型的数值可以 仍然是null

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

你可以提供一个链接到文件:如果它是一个可空上限类型的类型参数 的可能出现这种情况? –

+0

@KirillRakhman它在第一行。 – miensol

+0

对不起,错过了。 –

相关问题