gpt4 book ai didi

java - 如何从 Java 调用 Kotlin 标准库函数?

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:32 25 4
gpt4 key购买 nike

动机:

在我们的 Android 项目中,我们有很多验证,例如 str != null && !str.isEmpty(),所以我决定将它们重构为辅助方法。有一段时间我使用以下类(class)作为 helper :

public class StringUtil {
public static boolean isNullOrEmpty(@Nullable String str) {
return str == null || str.isEmpty();
}
}

问题:

我们已经有了一个用 Kotlin 编写的字符串助手类(比如 String.kt)。所以,这并不清楚有两个助手(一个在 Java 中,一个在 Kotlin 中)。

我尝试了什么:

在 String.kt 中复制过去的 isNullOrEmpty() 的简单方法没有成功,因为 $reciever 为 null,所以它崩溃了。

其次,我尝试使用 kotlin.text ( https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/is-null-or-empty.html ) 中的 Kotlin 原生 isNullOrEmpty():

public inline fun CharSequence?.isNullOrEmpty(): Boolean

但我不知道如何从 Java 中调用它。此页面 ( https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html) 不提供任何建议。

问题不在于 Accessing Kotlin extension functions from Java 。我的扩展是完全可见的,但它由于 null-receivier 而崩溃。正如我在下面提到的,问题更多是关于访问 native 库代码,而不是我自己的扩展。

有什么帮助吗?

最佳答案

一些标准库函数,包括这个函数,都标有@InlineOnly 注释,这使得它们无法从 Java 访问。对于大多数其他功能,您可以完全按照作为副本链接的问题中的描述访问它们。

关于java - 如何从 Java 调用 Kotlin 标准库函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49026389/

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