Kolin学习笔记十

  • kotlin与java
    • 可空性
    • 互操作性
    • @JvmName
    • @JvmFiled
    • @jvmoverloads
    • @jvmstatic
    • 异常捕捉
    • 函数类型操作

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")

Kolin学习笔记十-kotlin与java互操作相关推荐

  1. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  2. 电脑安装python3.74_python3.4学习笔记(十六) windows下面安装easy_install和pip教程

    python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...

  3. Java 学习笔记:第一章 Java入门

    Java 学习笔记:第一章 Java入门 1.1 计算机语言发展史以及未来方向 1.2 常见编程语言介绍 C语言 C++ 语言 Java语言 PHP 语言 Object-C和Swift 语言 Java ...

  4. Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件

    Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件 插件是由PolyWorks加载的动态链接库(DLL文件),然后查询Polyworks模块,以确定它们具有哪些功能,提供给 ...

  5. Java学习笔记(7)——Java基础之IO多线程网络思维导图

    Java面向对象学习笔记之:包括IO(字节流,字符流,节点流,处理流).线程(线程创建,线程控制,线程同步).网络(TCP Scoket,  UDP Scoket)(全屏观看Java学习笔记(7)-- ...

  6. IOS之学习笔记十五(协议和委托的使用)

    1.协议和委托的使用 1).协议可以看下我的这篇博客 IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/809 ...

  7. 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进

    吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...

  8. 吴恩达《机器学习》学习笔记十二——机器学习系统

    吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...

  9. 吴恩达《机器学习》学习笔记十——神经网络相关(2)

    吴恩达<机器学习>学习笔记十--神经网络相关(2) 一. 代价函数 二. 反向传播算法 三. 理解反向传播算法 四. 梯度检测 五. 随机初始化 1.全部初始化为0的问题 2.随机初始化的 ...

最新文章

  1. 如何改变iframe滚动条的样式?
  2. http头部content-type与数据格式
  3. iPhone X适配小结
  4. [JavaWeb-JavaScript]JavaScript_RegExp正则表达式对象
  5. Oracle表字段的增加、删除、修改和重命名
  6. 图像和视频语义分割的深度学习技术综述
  7. swagger常用注解
  8. JAVA操作FTP(FTP工具类)
  9. PS三分钟扣图教程,并增强画质
  10. 播布客教学视频_C学习笔记_8.2_统计1到100中9的个数(函数)
  11. js月份的计算公式_JavaScript用于设置月份的方法setMonth()
  12. 使用Python,OpenCV对图像进行亚像素点检测,并拟合椭圆进行绘制
  13. 大数据面试杀器__大数据股市指数项目思维导图
  14. 哀思著名力学家钱伟长先生
  15. 【深度学习】跟李沐学ai 线性回归 从零开始的代码实现超详解
  16. 【业界首创】攻防演练“杀手锏”!金睛云华HVV超融合一体机震撼登场!
  17. 2017年中山大学软件工程专硕考研经验
  18. react 使用express实现简单的分页接口,以及服务端返回public文件夹里的图片方法
  19. root用户无法登录,提示Module is unknown 原因和解决方法
  20. 南京理工大学机械考研考情与难度、参考书及上岸前辈备考经验指导

热门文章

  1. 特斯拉本周暴涨33%/ 阿里辟谣新加坡建全球总部/ 马斯克因特斯拉虚假宣传被调查…今日更多新鲜事在此...
  2. 更新至2020年分省数字经济发展水平测度指标(20多个指标)
  3. 批量图片加水印怎么弄
  4. 如何使用电子签名服务,告别传统纸质合同,实现可信无纸化办公?
  5. 数据库查询是地址信息
  6. 软件测试自学插画临摹,【答疑】学软件测试需要什么基础?如何快速自学软件测试? - 视频教程线上学...
  7. 7年员工因拒绝钉钉打卡被开除,索赔近60万,终审判决来了!
  8. 偏移shaderuv_unity3d shader顶点偏移节点运用
  9. 正负样本的定义、划分以及用于loss的计算的过程
  10. 当下最热门网页设计趋势总结