微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android-删除Kotlin中的“ this”回调

我是kotlin的新手,我想在回调本身中删除该回调实例.

我要实现的目标类似于以下代码.

private val myCallback = SomeInterfaceType {
   if(it.something) {
        someObject.removeListener(this@SomeInterfaceType)
   }
}

当然它不会编译,否则我不会在这里问.所以我问,如何从接口实例内部删除回调?

编辑:
错误为“推断的类型为X,但预期为Y.

编辑2:我只是意识到我问错了一个问题,它与之相似,但不完全是一个接口.

我正在使用的对象具有以下构造函数/接口

公共公开课Watcher< T>公共构造函数(调用:(T)-> kotlin.Unit)

因此实际上,我试图从调用内部引用观察者:(T)-> kotlin.Unit删除侦听器.

那可能吗?

解决方法:

您需要使用完整的object expression语法来引用,才能引用实例本身:

private val myCallback = object: SomeInterfaceType() {
    override fun onSomeEvent() {
        if (it.something) {
            someObject.removeListener(this)
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐