如何在匿名课堂中引用自己?

我在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转换将是非常混乱。