在Swift中,我可以创建一个执行类似操作的协议
protocol FoobarConvertible {
var foobar:String { get }
}
然后使用一致的实现扩展系统中的任何类
extension String : FoobarConvertible {
var foobar:String {
get {
return "foobar"
}
}
}
在Kotlin中,我认为接口类似于协议(?),我可以这样声明一个
protocol FoobarConvertible {
val foobar:String
}
但是,对我来说,从文档(似乎是简短的练习)中看不出来的是我如何扩展Kotlin的String类,使其符合FoobarConvertible。显然,我可以将扩展方法添加到Kotlin字符串
val String.foobar:String
get() = "foobar"
但是这不允许将Strings用作期望的FoobarConvertible类型的参数。
答案 0 :(得分:5)
Kotlin没有此语言功能,扩展功能和扩展属性已达到扩展功能的程度-之所以可用,是因为它们可以通过静态帮助器方法实现,而静态帮助器方法只是将扩展的接收者作为其第一个参数。
但是,不能将接口添加到您可能没有自己编译的现有类中-该功能将不仅仅是语法糖。 (至少在JVM上。)