有没有办法在Kotlin中进行Swift的协议组合

时间:2019-06-25 09:47:48

标签: swift kotlin interface protocols swift-protocols

因此,对于Swift,我们可以使用&运算符创建新类型或将其作为参数传递给方法。

示例Swift代码:

protocol Fooable {}
protocol Barable {}

// the new protocol
typealias FooBarable = Fooable & Barable

// method parameter 
func doSomethingFor(object: Fooable & Barable) { ... }

在Kotlin的界面中可以做到这一点吗?

2 个答案:

答案 0 :(得分:4)

请检查以下代码:

interface A{

}

interface B{

}

fun <T> check(variable: T) where T : A, T: B{
    print("Hello");
}

如果您尝试传递一个不确定的变量,则上面的代码会给您带来编译时错误

答案 1 :(得分:3)

在功能方面,您可以使用where-clause通过通用函数进行处理:

fun <T> foo(obj: T) where T: Fooable, T: Barable {
    ...
}