gpt4 book ai didi

java - 您能否将 Kotlin 接口(interface)的范围限定为仅与某些类一起使用?

转载 作者:行者123 更新时间:2023-12-02 13:31:27 24 4
gpt4 key购买 nike

我主要来自 iOS 背景。在 Swift 中,我们可以制作旨在由特定类实现的协议(protocol):

protocol MyViewControllerProtocol where Self: UIViewController {
func doViewControllerThings()
}

这非常强大,因为它允许我们使用默认实现扩展协议(protocol)并使用 self 上的方法
extension MyViewControllerProtocol {
func doViewControllerThings() {
self.view.addSubview(UIView())
}
}

我正在尝试在 Kotlin 中为 Android 项目做类似的事情。这可能吗?

最佳答案

不严格。您可以添加一个旨在让实现者返回自身的通用属性,但编译器不会阻止您提供一些其他对象来满足该属性。

interface SomeInterface {
val thisRef: Activity

// ...
}

以上接口(interface)可以调用 thisRef上的函数在其默认功能实现中。

实现类必须为 thisRef 提供值:
class MyActivity: Activity(), SomeInterface {
override val thisRef = this

//...
}

关于java - 您能否将 Kotlin 接口(interface)的范围限定为仅与某些类一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61212119/

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