I’m asking it with no offense, just for a curiosity.
While I was coding my own
org.springframework.web.method.support.HandlerMethodArgumentResolver implementation, I met a new requirement for myself, which is “Can I tell this ‘target’ parameter is Kotlin nullable?”. At a first glance, I knew that there’s
org.springframework.core.MethodParameter#hasParameterAnnotation so I thought that this problem is easily solved, but what an unlucky day!
Ditched in about half hours with debugger, I finally figured out that it is impossible, because while Kotlin nullable is compiled into jvm environment, it is annotated with
@org.jetbrains.annotations.Nullable but it is marked as
RetentionPolicy.CLASS, on contrast to
@javax.annotation.Nullable is declared as
I know that there’s a method
KType but in this scenario I only could get
KClass, and during the conversion between
KType, such “marked as nullable” information is completely gone because those two types are incompatible(discussed in here already).
Fortunately I found another workaround which is totally off from this topic, but still my curiosity is not resolved. Could anybody tell me some background story, reasons for this decision, etc., please?