在 Kotlin 中,接口可以从自定义 class 派生吗?
In Kotlin, can an interface be derived from a custom class?
我刚开始学习 Kotlin,在阅读文档时遇到了以下代码片段:
internal class LifecycleObserver : MyLocationListener(
private val context: Context,
private val lifecycle: Lifecycle,
private val callback: (Location) -> Unit)
这来自 https://developer.android.com/topic/libraries/architecture/lifecycle#kotlin,大约在页面的中间位置(以防万一我遗漏了一些对于理解此示例的上下文至关重要的内容)。 LifeCycleObserver
是一个接口,而 MyLocationListener
是一个用户定义的 class,假设是这种情况,在我看来,教程编写者已经从用户定义的 class。这有可能吗?如果是这样,这种 technique/set 技术的名称是什么?如果不是……好吧,同样的问题仍然适用。有了正确的术语,我的研究会比过去几天更有成效。感谢阅读。
我去过你提到的link。实际上这是他们的 kotlin 代码中的一个错误。当你切换到 java 代码时,你可以看到 class 被定义为,
class MyLocationListener implements LifecycleObserver {
private boolean enabled = false;
public MyLocationListener(Context context, Lifecycle lifecycle, Callback callback) {
...
}
...
}
它对应的 kotlin 代码是,
internal class MyLocationListener(
private val context: Context,
private val lifecycle: Lifecycle,
private val callback: (Location) -> Unit
) : LifecycleObserver {
private var enabled = false
...
}
但不知何故,一个错误悄悄进入,LifecycleObserver 出现在“:”之前,而 MyLocationListner 出现在“:”之后。如果可以,请向他们报告该错误。
如您所知,接口不能派生自 class。
我刚开始学习 Kotlin,在阅读文档时遇到了以下代码片段:
internal class LifecycleObserver : MyLocationListener(
private val context: Context,
private val lifecycle: Lifecycle,
private val callback: (Location) -> Unit)
这来自 https://developer.android.com/topic/libraries/architecture/lifecycle#kotlin,大约在页面的中间位置(以防万一我遗漏了一些对于理解此示例的上下文至关重要的内容)。 LifeCycleObserver
是一个接口,而 MyLocationListener
是一个用户定义的 class,假设是这种情况,在我看来,教程编写者已经从用户定义的 class。这有可能吗?如果是这样,这种 technique/set 技术的名称是什么?如果不是……好吧,同样的问题仍然适用。有了正确的术语,我的研究会比过去几天更有成效。感谢阅读。
我去过你提到的link。实际上这是他们的 kotlin 代码中的一个错误。当你切换到 java 代码时,你可以看到 class 被定义为,
class MyLocationListener implements LifecycleObserver {
private boolean enabled = false;
public MyLocationListener(Context context, Lifecycle lifecycle, Callback callback) {
...
}
...
}
它对应的 kotlin 代码是,
internal class MyLocationListener(
private val context: Context,
private val lifecycle: Lifecycle,
private val callback: (Location) -> Unit
) : LifecycleObserver {
private var enabled = false
...
}
但不知何故,一个错误悄悄进入,LifecycleObserver 出现在“:”之前,而 MyLocationListner 出现在“:”之后。如果可以,请向他们报告该错误。
如您所知,接口不能派生自 class。