Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disable not null checks in Kotlin

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.

like image 946
Combo Avatar asked Mar 19 '18 10:03

Combo


2 Answers

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); 
}
like image 154
Diego Gómez Olvera Avatar answered Oct 24 '22 00:10

Diego Gómez Olvera


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);
}
like image 22
Valentin Michalak Avatar answered Oct 24 '22 01:10

Valentin Michalak