整理自:Variable ‘runnable’ must be initialized
使用的时候:
private var runnable2= Runnable {
handler.postDelayed(runnable2,1000)
}
报:Variable ‘runnable’ must be initialized
在stackoverflow中有解释:
第一种:
private var runnable: Runnable = object : Runnable {
override fun run() {
/* Do something very important */
handler.postDelayed(this, 5000)
}
}
第二种:
private lateinit var runnable: Runnable
init {
runnable = Runnable {
/* Do something very important */
handler.postDelayed(runnable, 5000)
}
}
第三种:
class SelfReference<T>(val initializer: SelfReference<T>.() -> T) {
val self: T by lazy {
inner ?: throw IllegalStateException("Do not use `self` until initialized.")
}
private val inner = initializer()
}
fun <T> selfReference(initializer: SelfReference<T>.() -> T): T {
return SelfReference(initializer).self
}
private var runnable: Runnable = selfReference {
Runnable {
/* Do something very important */
handler.postDelayed(self, 5000)
}
}