gpt4 book ai didi

android - 覆盖 Kotlin lambda 表达式中的多个接口(interface)方法

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:40 26 4
gpt4 key购买 nike

假设我有一个 Callbacks 接口(interface),它有两个方法 onCurrentLocationonError:

    public interface Callbacks {

void onCurrentLocation(ClientLocation location);

void onError();
}

和一个在其构造函数中采用此接口(interface)的类,例如:

public MyLocationClient(Callbacks callbacks) {...}

现在,在 Kotlin 中,我是否应该能够以这种方式实例化 MyLocationClient:

val myLocationClient = MyLocationClient(
{ location: ClientLocation ->
updateClientLocation(location)
},
{})

如果不是,为什么不呢?

我看到的行为是:当接口(interface)只有一个方法时,这个对象的构造编译得很好。但是,只要我向 Callbacks 添加更多方法,编译器就会提示

"Type mismatch. Required: Callbacks! Found: (ClientLocation) -> Unit"

编辑:删除了对 location 的空检查,因为它与问题无关。

最佳答案

所以你在一个不是功能接口(interface)的匿名类上创建一个实例(它们只有一个方法)所以它会是这样的:

val myLocationClient = MyLocationClient(object : Callbacks {

override fun onCurrentLocation(location : ClientLocation?){
location?.run{ updateLocation(this) }
}

override fun onError(){ // should you not handle errors? }
})

关于android - 覆盖 Kotlin lambda 表达式中的多个接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46534885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com