我正在FooSwift中实现一个类,它应该实例化给定子类的对象SuperBar,例如Bar: SuperBar.我非常喜欢Swift中的泛型,所以我试着用这种方式实现它:
class Foo<T: SuperBar> {
func instantiateObject() -> T {
return T()
}
}
class SuperBar {
}
class Bar: SuperBar {
}
let foo = Foo<Bar>()
let obj = foo.instantiateObject()
Run Code Online (Sandbox Code Playgroud)
您可以在Xcode Playground中运行代码片段并观察它obj是类型SuperBar而不是Bar,虽然它说Bar我在Alt单击常量名称时.
有任何想法吗?:)