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

标签 annotations kotlin non-nullable

在Java中,我有以下方法:

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

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

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

最佳答案

您可以通过注释 type use 来做到这一点的Foo与一些 nullability annotations that the Kotlin compiler understands 。不幸的是,列表中的一些注释库不支持类型使用注释。

我发现@NotNull来自 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 的任何其他可空性注释来完成。目标。

关于annotations - 在 Java 中为 Kotlin 编译器注释类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45312946/

相关文章:

python - 图表上的烦人日期

java - 如何优雅地支持firebase数据库上的数据类型更改?

kotlin - 在 kotlin 中从 GSON 生成对象时不调用数据类初始化函数

java - 我们如何检查Android手机中的多个SIM卡

java - 模拟类将 null 分配给 @NonNull 字段(Android)

c# - 今天,我如何接近 C# 中的不可空引用类型?

spring - Spring Integration 中的 @Router 与注释(请求/回复)

java - 通过自定义注解进行代码注入(inject)

java - 在具有运行时保留的对象上找不到注释

xcode - 如何以向后兼容的方式使用 Objective-C __nonnull?