Java与Kotlin之间怎样进行互操作
发布时间:2021-02-02 10:50:43
来源:亿速云
阅读:98
作者:小新
这篇文章主要介绍了Java与Kotlin之间怎样进行互操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
前言
目前kotlin是谷歌首推的开发Android的语言,但由于历史原因,我们绝大部分项目依旧还是以Java为主的,也就是说存在Java和Kotlin两种语言同时开发的情况。
有人会说把老项目全部翻译成Kotlin,的确可以怎么做,但是成本还是挺大的。我们只能一点一点慢慢的向kotlin语言迁移。
那么在迁移的过程中就避免不了Java和Kotlin相互调用的情况。即Kotlin调用Java或者Java调用Kotlin。下面我们就来具体看下两者之间相互操作的一些解决方案。
kotlin调用java
可空性(Nullability)
Java默认有数值可空性而kotlin没有,所以在调用Java的方法的时候不知道会不会收到空值。
所以我们在Kotlin中调用Java的时候需要添加 ?或者 !来告诉Kotlin有可能出现空值。
比如这里有一个Java方法,接受一组字符串后返回一组做字符串:public Set toSet(Collection elements){
//TODO
}
那么Kotlin在调用的时候是不能确定输入和输出是否可为空的。就需要使用?或者 !来辅助判断。
为了方便Kotlin调用,我们通常使用 @NotNull 注解来标识Java代码的非原始参数、字段、返回值。@NotNull
Set toSet(@NotNull Collection elements){
//TODO
}
这个Kotlin在调用的时候就明确知道不能为空,这里我们使用的是jetBrain的 @NotNull注解,当然还有其他选择,如下图: