Sébastien Deleuze opened SPR-15942 and commented

As raised and discuss on KT-19592 Kotlin issue, null-safety of Spring API does not apply to generic type arguments. To do so, after KT-19592 being fixed we would have to use ElementType.TYPE_USE but its scope is too wide to make it usable for us at @TypeQualifierDefault level of @Nullable and @NonNullApi.

Another solution would be to add ElementType.TYPE_USE at @Target and annotate every generic type argument of Spring API, maybe that could be done via introducing a @NonNull annotation that would also be useful for #20311.


Issue Links: - #20311 Revisit nullability annotations towards GA ("depends on")

Referenced from: commits https://github.com/spring-projects/spring-framework/commit/0e1be82cfbc5b31bc8edcbec81feb08a99d9c3de, https://github.com/spring-projects/spring-framework/commit/1bc93e3d0f2bd3ffc6b48662073a427c31088b3d

Comment From: spring-projects-issues

Sébastien Deleuze commented

I have to postpone this improvement to a future release since there are flaws in current support that need to be fixed, see this detailed description for more info.

Comment From: spring-projects-issues

Sébastien Deleuze commented

See related discussion about Kotlin artifact with meta-annotations for Java types.

Juergen Hoeller I have added my feedback on their PR. My main concern is that current plan is to have a Kotlin centric meta-annotations library instead of a JVM one that could be use for more wide use cases, including pure Java projects.

Comment From: spring-projects-issues

Sébastien Deleuze commented

Latest update on that topic: I have asked to JetBrains to not make the upcoming meta-annotation library Kotlin specific since the scope is wider (cf. our usage on Spring which is also useful for Java developers via IDE and static code analysis tools) and also asked if it could avoid to use enums for annotation attribute value in order to avoid compilation warnings like we have currently with When.MAYBE when using Spring null-safety annotations without JSR 305 in the classpath.

Comment From: liuHongJie1217

lol

Comment From: sdeleuze

Will be covered as part of #28797.