我正在尝试将接口的回调实现(在类 A 中定义)分配给在另一个类 B 中定义的变量。假设类 A 具有接口 OnSomethingHappens,它定义了一个 doSomething 方法。
在 B 类中,我定义了我的回调变量,如下所示:
private lateinit var callback:A.OnSomethingHappens
Run Code Online (Sandbox Code Playgroud)
我需要创建一个类 A 的实例,以这种方式将回调变量传递给构造函数:
myinstanceA = A(callback)
Run Code Online (Sandbox Code Playgroud)
我正在尝试分配一个A.OnSomethingHappens使用以下代码实现的匿名类的实例:
callback = object : A.OnSomethingHappens {
override fun doSomething(..){
//here I put the implementation of this method
}
}
Run Code Online (Sandbox Code Playgroud)
但是编译器对我的回调变量说“期望成员声明”,对对象说“期望名称”。我做错了什么?
相反,我能够以这种方式定义并同时分配回调变量:
private var callback = object : A.OnSomethingHappens {
override fun doSomething(..){
//here I put the implementation of this method
}
}
Run Code Online (Sandbox Code Playgroud)
为什么?有哪些区别和可能的解决方案?