Disable not null checks in Kotlin

2019-07-20 02:01发布

问题:

class User(val name: String)

I know that in constructor will be added this check

Intrinsics.checkParameterIsNotNull(name)

To make sure that name do not store null.

Is there a way to instrument to not generate such checks? Maybe an annotation?

We need this in Spring, when map json string to a class. The validation is done by @NotNull and @Validfrom javax

class User(@field:NotNull @field:Email val name: String)

so, checks are performed immediately after object creation, but since exceptions are thrown from constructor this is not possible.

回答1:

You can see how to do it in this post, using either a compiler flag:

-Xno-param-assertions

Or Proguard:

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


回答2:

With Proguard, you can add this rule to get ride of all null checks

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