如何在匿名课堂中引用自己?
我在kotlin
有下一个代码:
handler.postDelayed(object : Runnable { override fun run() { Timber.i("run post msg") handler.postDelayed(this, AppPrefs.SEARCH_DELAY) } },AppPrefs.SOCKET_INTERVAL)
你如何看待它是简单的标准方式来创建延迟任务(使用Runnable
class
)。 this
引用赋值给anonimus对象实现了Runnable
并编译并正常工作
但是当我为这个做lamdba:
handler.postDelayed({ Timber.i("run post msg") handler.postDelayed(this, AppPrefs.SOCKET_INTERVAL) },AppPrefs.SOCKET_INTERVAL)
值引用到outher类。
如何从内在anonimus类引用自己?
你不可以做这个。 在Kotlin的论坛和Yole(这个语言的创造者之一)上也提到了类似的问题 :
this
在lambda中指的是包含类的实例,如果有的话。 一个lambda在概念上是一个函数,而不是一个类,所以不存在这样的事情可以参考的lambda实例。lambda可以转换为SAM接口实例的事实不会改变
this
。 有一个lambda意味着不同的事情取决于lambda是否得到SAM转换将是非常混乱。