Kotlin是否支持或将来制定类似于Swift中协议组成的接口组成计划?

lan*_*eky 1 kotlin swift

到目前为止,我找到的答案可能是“否”,但我想知道将来是否有任何计划支持此功能。这就是Swift中的样子。

协议组成具有SomeProtocol和AnotherProtocol的形式。您可以根据需要列出任意数量的协议,并用&分隔。除了协议列表之外,协议组成还可以包含一个类类型,您可以使用该类类型来指定所需的超类。

protocol Named 
{
    var name: String { get }
}

protocol Aged 
{
    var age: Int { get }
}

func wishHappyBirthday(to celebrator: Named & Aged) 
{
    print("Happy birthday, \(celebrator.name), you're \(celebrator.age)!")
}
Run Code Online (Sandbox Code Playgroud)

mar*_*ran 5

您无法在Kotlin中显式定义交集类型,但可以使用泛型类型约束在函数参数中实现交集类型。像这样:

interface Named {
    val name: String
}

interface Aged {
    val age: Int
}

fun <T> wishHappyBirthday(celebrator: T) where T : Named, T : Aged {
    println("Happy birthday, ${celebrator.name}, you're ${celebrator.age}!")
}
Run Code Online (Sandbox Code Playgroud)