Kotlin和Java混合开发必读:基本的互操作
在使用Kotlin和Java混合开发的时候,涉及到一些基本的互操作
一、属性的读写
1.Kotlin自动识别Java的属性的Getter和Setter
2.Java操作kotlin属性可以通过Getter和Setter的方式
二、空安全类型
1.Kotlin空安全类型的原理
空安全类型在Java中是没有的,在Kotlin中才有这个东西的。
Kotlin在编译的时候,会增加一个函数的调用,对参数值和返回值进行是否为空安全检查
可以通过事先确定哪些允许为空,哪些不允许。
可以通过使用@Nullable和@NotNull来弥补
三、几类函数的调用问题
1.包级函数:静态方法
包级函数在Kotlin中有,在Java中没有。
Kotlin在编译的时候,会为kotlin生成一个类,这个类包含了所有的包级函数,在Java看来,这些都是静态方法,Java在调用的时候,只需要按照静态方法的方式去调用就好了
2.扩展方法:带Receiver的静态方法
3.运算符重载:带Receiver的对应名称的静态方法
四、几个常见注解的使用
1.@JvmField:将属性编译为Java变量
是Kotlin和Java相互操作属性经常会遇到的问题
如果我们希望Kotlin的属性,无论是看起来还是编译后,都是像Java变量一样,可以使用这个注解
2.@JvmStatic:将对象的方法编译成Java静态方法
3.@JvmOverloads:默认参数生成重载对象,如果想要Java中看到使用这个变量的默认参数,就需要加一下这个注解
4.Kotlin类编译后,会生成静态文件,文件默认是kotlin类+Kt,在Java中可以根据kotlin类+Kt.方法使用,如果想要自定义指定这个类编译后的文件名,使用这个注解
五、NoArg和AllOpen(插件)
1.NoArg为被标记的类生产无参构造,支持Jpa注解,如@Entity
2.AllOpen为被标记的类去掉Final,在Kotlin中,所有的类都默认是Final的,无法被继承,加上这个注解,就去掉了Final,就允许被继承了,支持Spring的注解,如@Component
3.支持自定义注解类型,例如@PoKo
六、泛型
1.通配符Kotlin的”*”对应于Java的”?”
2.协变和逆变,由Java中的extends和super变成了out/in
Java 泛型super怎么理解?与 extends 有何不同?
3.没有Raw类型
1.Java中的List,在Kotlin中就要写成List<*>

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
javascript中的数组对象
1.创建数组的三种方式: 1.1 var 数组名=[元素1,元素2,元素3...]; 例如: var arr1=[1,2,3,4]; 1.2 var 数组名=new Array(元素1,元素2,元素3...) 例如: var arr2=new Array(5,6,7,8); 1.3 通过下标的方式为数组赋值,下标从0开始 var 数组名=new Array(数组长度); var 数组名[0]="数组第一个元素的值"; var 数组名[1]="数组第二个元素的值"; var 数组名[2]="数组第三个元素的值"; 2.数组对象的属性 arr.join(sep) 把数组中的所有元素使用sep拼接成一个字符串,如果没指定分割符,则使用逗号做为分割符 例子1: var arr = new Array(3); arr[0] = "hello"; arr[1] = "python"; arr[2] = "javascript"; document.write(arr.join()); 返回: hello,python,javascript 例子2: var arr = new Array(3); ...
- 下一篇
SAP UI5和CRM WebUI的View和Controller是如何绑定的
UI5 例如我在UI5的界面上画一个按钮,点击之后弹出一个Alert dialog。 在XML view里只定义了controller的名称和事件处理函数的名称。那么按钮被点击之后,controller的onShowHello被触发。但是,这个controller的实例是什么时候被创建, 并且关联到这个申明它的XML view里呢? 在XMLView.js里,我定义的XML view的源代码被加载之后,XMLView会调用XMLTemplateProcessor, 解析XML view的内容,根据里面的control申明创建对应的UI5控件实例。下图的变量_xContent.innerHTML即为上图XML view的源代码。 XMLView的实例通过工厂模式创建之后,XMLView源代码里定义的controller名称sap.ui.demo.walkthrough.controller.App,会赋到oView实例的字段_controllerName上。 View和Controller的绑定是通过这个方法createAndConnectController完成: connect co...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程