禁用 Kotlin 中的非空检查

8
class User(val name: String)

我知道在构造函数中将会添加这个检查。
Intrinsics.checkParameterIsNotNull(name)

为了确保 name 不存储空值。
有没有一种方法可以不生成这样的检查呢?也许有一个注释?
我们在 Spring 中需要这个,当将 map json 字符串映射到类时。验证是通过 javax 的 @NotNull@Valid 进行的。
class User(@field:NotNull @field:Email val name: String)

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


如果对象使用空名称构建,那么名称的值是如何设置的?Spring 版本如何强制为有效版本?这似乎是一个不寻常的情况。 - Mikezx6r
1
将Spring的名称设置为null,在对象创建后验证名称属性不为空,如果为空,则返回一个具有未通过验证的所有属性的对象。 - Combo
2个回答

6
你可以在这篇文章中看到如何做到这一点,使用编译器标志之一:
-Xno-param-assertions

或者Proguard:
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
 static void checkParameterIsNotNull(java.lang.Object, java.lang.String); 
}

谢谢,但我们只想在某些情况下禁用它,而不是完全禁用。也许可以使用注释。 - Combo
在哪个文件中添加这个语句? - Rama Krishna

1
使用Proguard,您可以添加此规则以摆脱所有空检查。
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
    static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接