gpt4 book ai didi

kotlin - 从 Java 返回的 null 在 Kotlin 测试中的比较失败

转载 作者:行者123 更新时间:2023-12-02 13:22:24 24 4
gpt4 key购买 nike

Java 类

class Processor{
Long getLatestOffset(){
return null
}
}

Kotlin 测试
@Test
fun testNull() {
assertThat(processor.latestOffset).isNull() ---> Fails
assertThat(processor.latestOffset as Long?).isNull() --->Passes
}

谁能解释它周围的原因?我发现类型转换完全没有必要。

最佳答案

Long翻译成 Kotlin 的 Java 成员默认为 Long! ,这意味着 Kotlin 不知道它在哪里可以为空。因此,这里失去了 Kotlin 的零安全性。为了获得 Kotlin null,必须转换为 Kotlin 可空类型, 否则你会得到 IllegalStateException .

如果添加 @Nullable在Java类中,会直接翻译成Long?在 Kotlin 。

如果添加 @NonNull在 Java 类中,它将被翻译为 Long在 Kotlin 。

关于kotlin - 从 Java 返回的 null 在 Kotlin 测试中的比较失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53148715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com