我尝试在Swift中使用Generic类型,但我发现它在继承和覆盖方面效果不佳。这是一个代码示例:
class A {
class var test: String{
return getName()
}
class func getName() -> String {
return "I'm class A"
}
func doSomething() -> Void {
println(self.dynamicType.test)
}
}
class B : A {
override class func getName() -> String {
return "I'm class B"
}
}
class C<T: A> {
func doSomething() -> Void {
var x = T()
x.doSomething()
}
}
var c = C<B>()
c.doSomething()//This line prints out "I'm class A"
看起来甚至在创建类C的实例时我将类型指定为类B,使用泛型类型T创建的新实例仍然在类A类中。
这里有一个类似的问题:
http://stackoverflow.com/questions/27899744/wrong-generic-type-in-swift 但还没有答案/解决方案,这是Swift的错误吗?