可以直接把函数申明在文件中
空安全设计
- 声明变量类型后面加?表示可空类型:
et_name: EditText? = null -
java中也有不为空设定加上注解:@NonNull - 在调用可空类型函数时,
!!.表示强行调用,如果对象是空,就会抛出null异常。?.会先判断是否为null,如果不为空才会调用该对象的函数。 - 如果保证绝对不为
null,肯定会初始化的时候,可以使用lateinit关键字,这样调用函数的时候也不用判断是否为null了
java中instanceof关键字来判断类型,kotlin中使用is关键字来判断类型
kotlin中as关键字完成强制转换
kotlin中获取类对象,使用::class来获取kotlin类对象,::class.java来获取java类对象。
构造方法
构造方法调用多参数构造方法
constructor(context: Context): this(context, null){
}
构造器继承父类方法
constructor(context: Context, attr: AttributeSet?): super(context, attr){
}
数组
声明数组
-
val codeList = arrayOf("1", "2")arrayof对于基本类型会有装箱操作,所以对性能和内存有开销,所幸kotlin有intArrayof数组等。
集合
-
val list: MutableList<Int> = ArrayList()创建集合或者使用ArrayList创建,List<Int>创建的集合是不可修改的集合。也可直接使用:arrayListOf<>(),mutableListOf<>()。
静态变量和函数
- 直接在文件里直接定义的函数(不是在
class文件里定义的函数)就是静态函数也叫顶级函数。在
kotlin中直接就可以调用,而在java中调用需要文件名加Kt然后调用方法,比如:UtilsKt.dp2px()。 - 当用
object修饰一个类,那么这个类的所有方法和属性都是静态的。java调用时使用函数的时候需要使用类名.INSTANCE.函数。
可以使用object来生成一个单例对象。 - 伴生对象创建静态变量和函数:
companion object{ }java使用这种方式调用函数时需要类名.Companion.函数方式调用
code in 200..299 表示code的值在200和299之间包括200和299。
枚举类型enum class定义
java中匿名内部类引用外部类对象的时候使用:类名.this.属性。kotlin中this@类名.属性
内部类
- 在
kotlin中直接创建内部类就是静态内部类,普通内部类需要用到inner关键字。在
kotlin中如果不想其他的module可以访问当前mudule中的类,可以在类名前面加上internal关键字。
继承
kotlin中只有被abstract、open、interface修饰的关键字才可以被继承。