0.kotlin 中文网—语法
http://www.kotlincn.net/docs/reference/java-to-kotlin-interop.html
1.const val 和val区别
const val
只能在Top-level,object和companion object的成员中声明
只允许String或者原始属性初始化
不能自定义get()
区别:
const val Str被public final static修饰,
valStr被private final static修饰。
并且valStr的值是通过getValStr()去获取的,
const修饰的constStr是直接获取的,所以就常量而言为了提升效率最好用const修饰
2.@JvmStatic 和 @JvmField 在kotlin中的使用
@JvmField消除了变量的getter与setter方法 @JvmField修饰的变量不能是private属性的 @JvmStatic只能在object类或者伴生对象companion object中使用,而@JvmField没有这些限制 @JvmStatic一般用于修饰方法,使方法变成真正的静态方法;如果修饰变量不会消除变量的getter与setter方法,但会使getter与setter方法和变量都变成静态
https://blog.csdn.net/BossDarcy/article/details/106545470
3.kotlin 单例 本生object xxx{} 饿汉式单例
https://www.jianshu.com/p/5797b3d0ebd0
4.object和compain object 区别
object 表达式(匿名内部类) 不能定义构造函数 和声明(表示单例类)
compain object 不能脱离类,访问class.Compain.xxx
https://www.jianshu.com/p/a8d1877143b2
5.Kotlin lateinit 和 by lazy
https://www.jianshu.com/p/e2cb4c65d4ff
lateinit 只用于变量 var,而 lazy 只用于常量 val
lazy后接{lamada表达式}返回T,调用一次,后续调用只显示记录
lateinit 生命周期中获取或初始化变量,类似Android onCreate()