【发布时间】:2018-09-05 17:09:11
【问题描述】:
我正在尝试将接口的回调实现(在类 A 中定义)分配给在另一个类 B 中定义的变量。假设类 A 具有定义 doSomething 方法的接口 OnSomethingHappens。
在 B 类中,我已经这样定义了我的回调变量:
private lateinit var callback:A.OnSomethingHappens
我需要创建一个A类的实例,以这种方式将回调变量传递给构造函数:
myinstanceA = A(callback)
我正在尝试使用此代码分配实现A.OnSomethingHappens 的匿名类的实例:
callback = object : A.OnSomethingHappens {
override fun doSomething(..){
//here I put the implementation of this method
}
}
但是编译器对我的回调变量说“期望成员声明”,对对象说“期望名称”。 我做错了什么?
相反,我能够以这种方式定义并同时分配回调变量:
private var callback = object : A.OnSomethingHappens {
override fun doSomething(..){
//here I put the implementation of this method
}
}
为什么?有哪些区别和可能的解决方案?
【问题讨论】:
-
我尝试添加更多细节,以便您更好地理解。我正在使用我在 Android 应用程序中编写的代码行,B 类对我来说是一个片段,A 类是一个公共类使用我从片段中使用的一些方法来为我做一些工作。当 A 类结束这项工作时,使用我在其构造函数中传递的回调(当我在片段中创建 A 类的实例时),调用在 OnSomethingHappens 接口中定义的方法 doSomethig()。片段实现了这个方法并准备了我上面显示的回调变量,并将其传递给类 A。
标签: kotlin anonymous-inner-class