在Java中,我有以下方法:
public Optional<Foo> getFoo() {
// always return some non-null value
}
在 Kotlin 代码中,该方法的返回类型为Optional<Foo!>!
。通过使用@Nonnull
注释我可以将其缩减为Optional<Foo!>
(即只有Foo
类型不再进行空检查)。
有没有办法对方法进行注释,使 Kotlin 编译器正确地对返回值进行空检查?
您可以通过注释来做到这一点type use https://docs.oracle.com/javase/tutorial/java/annotations/type_annotations.html of Foo
与一些Kotlin 编译器理解的可空性注释 https://kotlinlang.org/docs/reference/java-interop.html#nullability-annotations。不幸的是,列表中的某些注释库不支持类型使用注释。
我找到@NotNull
from org.jetbrains:annotations:15.0 https://mvnrepository.com/artifact/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>
在科特林中。
当然,这可以使用我上面提到的列表中支持的任何其他可空性注释来完成TYPE_USE
target.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)