首页 > 解决方案 > Java for Kotlin 中的包范围非空注释(由 Gradle 构建)

问题描述

我正在尝试编写一个具有不可为空 API 的 Java 库,我希望 Kotlin 能够正确推断出这种不可为空性。根据Kotlin 的 Java interop reference ,我正在使用JSR-305注释及其@TypeQualifierDefault来实现整个包的效果。

我使用 Gradle 4.10.2 构建它,并按照说明-Xjsr305=strict提供给 Kotlin 编译器。然而,当我仔细检查 Kotlin 的类型时,它们被报告为平台类型,例如:

fun sample.Foo.bar(T!): kotlin.collections.(Mutable)List<T!>!

我做错了什么,我没有得到以下输出?

fun sample.Foo.bar(T): kotlin.collections.(Mutable)List<T>

请注意,Spring Framework 5 有一个类似的注解,名为@NonNullApi.

我正在使用 OpenJDK 11。

PS。我知道我可以用 注释每个方法和参数@Nonnull,但我追求全局行为并将 Kotlin 转换List<T!>List<T>.


这是MCVE:

标签: javagradlekotlinkotlin-null-safetyjsr305

解决方案


推荐阅读