Yan*_*nev 10 java reflection null nullable kotlin
我正在开发一个代码生成器,它在运行时从类中获取数据.该发生器仅适用于Kotlin.目前,我遇到了问题,因为我不知道如何检查该字段是否可以为空.
所以主要的问题是如何通过反射实现这种检查?
mie*_*sol 12
你可以检查可空性isMarkedNullable
.以下代码:
class MyClass(val nullable: Long?, val notNullable: MyClass)
MyClass::class.declaredMemberProperties.forEach {
println("Property $it isMarkedNullable=${it.returnType.isMarkedNullable}")
}
Run Code Online (Sandbox Code Playgroud)
将打印:
Property val MyClass.notNullable: stack.MyClass isMarkedNullable=false
Property val MyClass.nullable: kotlin.Long? isMarkedNullable=true
Run Code Online (Sandbox Code Playgroud)
摘自文档(强调我的):
对于Kotlin类型,这意味着允许空值由此类型表示.实际上,这意味着该类型在结尾处带有问号.对于非Kotlin类型,它表示使用此类型声明的类型或符号使用运行时保留的可为空性注释(例如javax.annotation.Nullable)进行注释.
请注意,即使
isMarkedNullable
为false,类型的值仍然可以null
.如果它是具有可为上限的类型参数的类型,则可能发生这种情况:Run Code Online (Sandbox Code Playgroud)fun <T> foo(t: T) { // isMarkedNullable == false for t's type, but t can be null here }
归档时间: |
|
查看次数: |
1006 次 |
最近记录: |