Kolin学习笔记十-kotlin与java互操作

kotlin与java

可空性

kotlin调用java代码,因为kotlin存在可空性,所以当java方法返回空,当kotlin调用时,可能会报错。这里有一个平台类型,例如 String!,代表可能为空,可能不为空
重点:kotlin调用java ,一般加上?空安全操作符使用,或者使用notnull注解

互操作性

kotlin调用java 可以直接属性访问,a.name=
其实还是调用了get 和set方法。

kotlin顶层函数在java里都被当做静态方法看待和调用

@JvmName

指定编译类的名字。如果我们的方法没有写在类里,java需要调用,就使用@jvmName来指定名字
在koltin文件里 @file:jvmName(“xxx”)

那么在java里调用kotlin文件的方法,就能用xxx代替文件名

@JvmFiled

使得java访问kotlin类的属性,不用getxxx()这样调用,而是对象名.xxx=这样调用,也可以让java直接访问伴生对象里的属性。但是kotlin调用java,访问对象属性,可以直接按kotlin的方式来,上面有提到。

@jvmoverloads

因为kotlin的类方法存在默认值的情况,在kotlin中,可以只传全部参数中的几个,但给java调用时,得在kotlin函数上方加上 @ jvmoverloads,强制重载,这样java调用kotlin时,也能和kotlin一样,只用传其中的几个参数。

这个十分重要,因为写一个API,我们不应该只考虑kotlin开发者,还需要考虑java用户调用这个api是否方便。

@jvmstatic

作用和@jvmfiled类似,允许java直接调用伴生对象里的方法。

异常捕捉

@throw(xxxException::class)
kotlin方法抛出的异常,java调用时,是按throwable处理的,如果我们要指定java捕捉某种异常类型,就在kotlin方法上面,使用@throws注解,这样java调用时,就能捕捉特地的异常了,而不是throwable

函数类型操作

kotlin中的函数类型,其实就是类似于
val funTest:(String)->String={it->

}
这样的,匿名函数作为变量。
当java调用kotlin的函数类型时,使用FunctionN这样的名字的接口表示,N表示参数数目(N 0-23)。

//kotlin
class A{
  val  funTest:(String)->String={it->
}
}
//java
A a=new A()
Function1<String,Stirng> translator= a.funTest()
translator.invoke("ssss")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值