在 Kotlin 中禁用非空检查

Com*_*mbo 8 bean-validation kotlin javax

class User(val name: String)
Run Code Online (Sandbox Code Playgroud)

我知道在构造函数中将添加此检查

Intrinsics.checkParameterIsNotNull(name)
Run Code Online (Sandbox Code Playgroud)

确保name不存储空值。

有没有办法检测不生成此类检查?也许是注释?

我们在 Spring 中需要这个,当将 json 字符串映射到一个类时。验证是通过完成@NotNull@Valid从的javax

class User(@field:NotNull @field:Email val name: String)
Run Code Online (Sandbox Code Playgroud)

因此,在对象创建后立即执行检查,但由于从构造函数抛出异常,这是不可能的。

Die*_*era 5

你可以在这篇文章中看到如何使用编译器标志来做到这一点

-Xno-param-assertions
Run Code Online (Sandbox Code Playgroud)

或 Proguard:

-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
 static void checkParameterIsNotNull(java.lang.Object, java.lang.String); 
}
Run Code Online (Sandbox Code Playgroud)