val cycleRunnable = Runnable { handler.postDelayed(cycleRunnable,100) }
我收到了错误
错误:(219,29)类型检查遇到了递归问题.最简单的解决方法:明确指定声明的类型
但它的确切java版本没有任何错误
private final Runnable cycleRunnable = new Runnable() { public void run() { handler.postDelayed(cycleRunnable,POST_DELAY); } };
解决方法
Kotlin禁止在其自己的初始化程序中使用变量或属性.
您可以使用object expression以与Java相同的方式实现Runnable:
val cycleRunnable = object : Runnable { override fun run() { handler.postDelayed(this,100) } }
另一种方法是使用一些函数来返回Runnable并在传递给它的lambda中使用cycleRunnable,例如:
val cycleRunnable: Runnable = run { Runnable { println(cycleRunnable) } }
或者通过自我参考来看a workaround that allows a variable to be used inside its own initializer:
此代码无法开箱即用:您需要从上面的链接添加utils或使用kotlin-fun
库:
val cycleRunnable: Runnable = selfReference { Runnable { handler.postDelayed(self,100) } }