sop*_*hia 3 lambda android interface kotlin
说我有Callbacks两个方法的接口onCurrentLocation和onError:
public interface Callbacks {
void onCurrentLocation(ClientLocation location);
void onError();
}
Run Code Online (Sandbox Code Playgroud)
还有一个在其构造函数中采用此接口的类,例如:
public MyLocationClient(Callbacks callbacks) {...}
Run Code Online (Sandbox Code Playgroud)
现在,在Kotlin中,我应该能够以这种方式实例化MyLocationClient:
val myLocationClient = MyLocationClient(
{ location: ClientLocation ->
updateClientLocation(location)
},
{})
Run Code Online (Sandbox Code Playgroud)
如果没有,为什么不呢?
我看到的行为是:当接口只有一种方法时,此对象的构造可以很好地编译。但是,一旦我向中添加了更多方法Callbacks,编译器就会抱怨
“类型不匹配。必需:回调!找到:(ClientLocation)->单位”
编辑:删除了空检查,location因为它与问题无关。
因此,您要在不是功能接口(它们只有一个方法)的匿名类上创建实例,因此它类似于:
val myLocationClient = MyLocationClient(object : Callbacks {
override fun onCurrentLocation(location : ClientLocation?){
location?.run{ updateLocation(this) }
}
override fun onError(){ // should you not handle errors? }
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1843 次 |
| 最近记录: |