一、与java相比,kotlin有哪些新特性:

kotlin也是寄生在jvm平台,kotlin源代码都会被编译成class文件
1、kotlin对可空类型的支持,通过编译期检测可能存在的空指针异常,使程序更可靠。
2、对函数类型的支持。使代码更简洁,并且多线程安全。
3、没有了static,有顶层函数和顶层方法,支持扩展函数。类默认public final。函数不用声明异常。
4、对集合支持链式操作,对类型系统就行了新的分类,不区分基本类型和对象类型。

二、标准函数和静态静态方法

1、with 接受两个参数,第一个对象,lambda表达式,最后一行代码作为返回;
2、run 使用场景跟with十分相似,不能直接调用,要调用某个对象的run才行,只结束一个lambda参数。let 和run类似。let用it,run用this 返回实体;
3、apply 跟run相似,无返回值,返回对象本身 。also和apply类似,also it,appy this 返回实体;
4、repeat 重复执行lambda表达式中内容
定义静态方法
5、companion object(在 companion 方法里面加 @JvmStatic注解,会编译为真正的静态方法
6、顶层方法(创建File的文件)
只有在单例类,companion object ,顶层方法才可以使用const

三、协程的基本用法,更多的作用域构建,协程简化回调

1、协程创建的方式有两种launch()、async()又返回值,
线程切换 withContext (Dispatchers.Main/Dispatchers.IO),需要在协程或者suspend方法使用
2、现在有一个场景,需要将接口a中的数据和接口b中的数据合并,用协程会很方便

四、java和kotlin相互调用可以使用java和kotlin混合编程:

1、kotlin->java
像kotlin集合类API就是直接用的java的api
Kotlin调用Java中的Getter 和 Setter,可以直接使用属性名字
调用java中的void方法,Kotlin 调用时中返回 Unit
kotlin掉java的方法,该方法为kotlin关键字,反引号()字符转义。MathTools().is`(1)

2、java->kotlin
java访问kotlin属性,还是setxx,getxx,如果是is开头,setxx,isxx
kotlin中用 @JvmField var NO = 0标明实例字段,java调用d.NO = 10)
访问静态通过加Companion访问,Department.Companion.getInnerID(), @JvmField注解可以直接访问
kotlin中internal对应java public
java像Kotlin中一样可以调用多个重载,可以使用 @JvmOverloads注解
Kotlin中的函数加上注解 @Throws(Exception::class),java调用的时候才会在编译时提示异常

五、伴生对象companion,jvmstatic ,jvmfield等

companion
每个类可以对应一个伴生对象
伴生对象的成员全局独一份
伴生对象的成员类似于Java的静态成员
@JvmStatic
调用kotlin类的方法需要加上,java调用是变成真正的静态类,不用加companion
@JvmField
调用kotlin类的成员变量需要加上,将访问权限改为public

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐