Sim*_*low 0 design-patterns kotlin
下面是C++,C#和其他类似语言的完美构造.为什么这在Kotlin中是不可能的
open class EndPoint<T> (url: String): T{
...
}
class BlueEndPoint: EndPoint<BlueInterface>{}
class RedEndPoint: EndPoint<RedInterface>{}
Run Code Online (Sandbox Code Playgroud)
因为Kotlin使用泛型而不是模板.它只有一个EndPoint类,而不是T像C++那样创建一个新类.
在JVM上,这个类只需要扩展一个超类(可能Object)和一组特定的接口(可能没有).即你可以没有EndPoint<BlueInterface>实现BlueInterface但不RedInterface和,反之亦然EndPoint<RedInterface>.
根据MSDN,它在C#中也不起作用(我相信CLR在定义类时有相同的要求):
它是C++,这是例外.