1、定义静态的成员变量,然后延迟初始化
lateinit:延迟初始化属性
companion:伴生对象
open class BaseApp: Application(){
companion object {
lateinit var app : BaseApp;
}
override fun onCreate() {
super.onCreate()
app = this
}
}
2、switch 变成 when 怎么用
when (type) {
1 -> {
// TODO
}
2 -> {
// TODO
}
3 -> {
// TODO
}
}
3、实体类(bean) 的创建
data class TelephoneStateEvent(val type: Int)
4、kotlin 中的三目
if (isRoot) "牛皮" else "呵呵"
5、run 的使用
run { // TODO }
6、let、with、run、apply、also 函数区别
函数名 | 函数体内使用的对象 | 返回值 | 是否是扩展函数 |
---|---|---|---|
let | it指代当前对象 | 闭包形式返回 | 是 |
with | this指代当前对象或者省略 | 闭包形式返回 | 否 |
run | this指代当前对象或者省略 | 闭包形式返回 | 是 |
apply | this指代当前对象或者省略 | 返回this | 是 |
also | it指代当前对象 | 返回this | 是 |
7、延迟属性 Lazy
这个东西有点类似单例,其中 mode 有三种
1、LazyThreadSafetyMode.SYNCHRONIZED:保持同步,保证值的唯一
2、LazyThreadSafetyMode.NONE:不能保证同步,和值的唯一
3、LazyThreadSafetyMode.PUBLICATION:不是同步的,但是也能保证值的唯一,不懂,所以我不用它
val lazyValue:String by lazy(mode = LazyThreadSafetyMode.NONE) {
print("create")
"Hello World"
}
8、可观察属性 Delegates.observable
var name: String by Delegates.observable("<no name>") {
_, old, new ->
println("$old -> $new")
}
网友评论