在Java中为Kotlin编译器注释类型参数

时间:2017-07-25 20:30:02

标签: annotations kotlin non-nullable

在Java中,我有以下方法:

public Optional<Foo> getFoo() {
    // always return some non-null value
}

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

有没有办法注释方法以使Kotlin编译器无效正确检查返回值?

1 个答案:

答案 0 :(得分:4)

您可以使用type use中的某些Foo注释nullability annotations that the Kotlin compiler understands来完成此操作。不幸的是,列表中的一些注释库不支持类型使用注释。

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

import org.jetbrains.annotations.NotNull;

...

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

然后返回类型将在Kotlin中被视为Optional<Foo>

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