在Java中,我有以下方法:
public Optional<Foo> getFoo() {
// always return some non-null value
}
在 Kotlin 代码中,此方法的返回类型为Optional<Foo!>!
. 通过使用@Nonnull
注释,我可以将其缩减为Optional<Foo!>
(即只有Foo
类型不再被空检查)。
有没有办法注释方法以使 Kotlin 编译器正确地对返回值进行空检查?
在Java中,我有以下方法:
public Optional<Foo> getFoo() {
// always return some non-null value
}
在 Kotlin 代码中,此方法的返回类型为Optional<Foo!>!
. 通过使用@Nonnull
注释,我可以将其缩减为Optional<Foo!>
(即只有Foo
类型不再被空检查)。
有没有办法注释方法以使 Kotlin 编译器正确地对返回值进行空检查?
您可以通过使用Kotlin 编译器理解的一些可空性注释来注释类型使用来做到这一点。不幸的是,列表中的一些注释库不支持类型使用注释。Foo
我发现@NotNull
from 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
}
然后返回类型将被视为Optional<Foo>
在 Kotlin 中。
当然,这可以通过我上面提到的支持TYPE_USE
目标的列表中的任何其他可空性注释来完成。