Java for Kotlin编译器的注释类型参数

Bom*_*mbe 2 annotations non-nullable kotlin

在Java中,我有以下方法:

public Optional<Foo> getFoo() {
    // always return some non-null value
}
Run Code Online (Sandbox Code Playgroud)

在Kotlin代码中,此方法的返回类型为Optional<Foo!>!。通过使用@Nonnull注释,我可以将其缩减为Optional<Foo!>(即,仅Foo不再对类型进行空检查)。

有没有办法注释使Kotlin编译器对返回值正确进行null检查的方法?

hot*_*key 5

您可以通过使用Kotlin编译器可以理解的Foo一些可空性注释来注释类型的使用来实现。不幸的是,列表中的某些注释库不支持类型使用注释。

我发现@NotNullfrom org.jetbrains:annotations:15.0(但不是13.0)具有TYPE_USE目标,因此您可以将库添加为项目的依赖项并注释类型使用:

import org.jetbrains.annotations.NotNull;

...

public @NotNull Optional<@NotNull Foo> getFoo() {
    // always return some non-null value
}
Run Code Online (Sandbox Code Playgroud)

然后,将Optional<Foo>在Kotlin中看到返回类型。

当然,这可以通过我上面提到的支持TYPE_USE目标的列表中的任何其他可空性注释来完成。