动机:
在我们的Android项目中,我们进行了许多验证,例如str!= null&& !str.isEmpty(),所以我决定将它们重构为辅助方法.
一会儿,我使用以下课程作为助手:
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,所以它崩溃了.
public inline fun CharSequence?.isNullOrEmpty(): Boolean
问题不是关于Accessing Kotlin extension functions from Java.我的扩展名是完全可见的,但是由于空接收器而崩溃.正如我在下面提到的,问题更多是关于访问本机库代码,而不是我自己的扩展.
有什么帮助吗?
解决方法:
一些标准库函数(包括该函数)都标有@InlineOnly批注,这使它们无法从Java访问.对于大多数其他功能,您可以完全按照问题(重复链接)中的说明进行访问.
标签:kotlin,java,android
来源: https://codeday.me/bug/20191025/1927805.html