self.dynamicType不适用于Swift中的Generic类型?

时间:2015-01-20 01:01:56

标签: generics inheritance swift

我尝试在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的错误吗?

0 个答案:

没有答案