在Java中为Kotlin编译器注释类型参数
在Java中,我有以下方法:
public Optional<Foo> getFoo() { // always return some non-null value }
在Kotlin代码中,这个方法的返回类型是Optional<Foo!>!
。 通过使用@Nonnull
注解,我可以将其降低到Optional<Foo!>
(即只有Foo
类型不再被空值检查)。
有没有一种方法来注释的方法,使Kotlin编译器空检查正确的返回值?
您可以通过注释Foo
的类型使用来注明Kotlin编译器可以理解的一些可空性注释 。 不幸的是,列表中的一些注释库不支持类型使用注释。
我发现来自org.jetbrains:annotations:15.0
(但不是13.0)的TYPE_USE
具有TYPE_USE
目标,因此可以将该库作为依赖项添加到项目中,并对类型use:
import org.jetbrains.annotations.NotNull; ... public @NotNull Optional<@NotNull Foo> getFoo() { // always return some non-null value }
然后返回类型将在Kotlin中被视为Optional<Foo>
。
当然,这可以使用上面提到的支持TYPE_USE
目标的列表中的任何其他可空性注释来完成。
- 在Instant App中应用插件“kotlin-android”会导致“null不能转换为非空类型的com.android.build.gradleBasePlugin”
- 为什么这个Kotlin对象继承自身?