2016-05-06 56 views
0

我试图投与一类参数的类的对象到相同类的对象与更通用的类型参数,如下面的银行代码中所示:夫特:在类型继承参数

class ParameterClassA { 
} 

class ParameterClassB: ParameterClassA { 
} 

class WorkingClassA<T> { 
} 

class WorkingClassB: WorkingClassA<ParameterClassB> { 
} 

let object1 = WorkingClassB() 
let object2: WorkingClassA<ParameterClassA> = object1 

不幸的是,也许和预期的一样,这是行不通的,因为WorkingClassA<ParameterClassB>不能“downcast”到WorkingClassA<ParameterClassA> - 我知道Java不允许它,我希望Swift可能会更好地支持这样的构造。

是否有不同的方式来做到这一点是斯威夫特,或者它是不可接受的?对我来说,“向上”类型参数似乎很好,但是可能有不允许的原因吗?

谢谢!

回答

0

就像这样的事情可能会很方便,这不是真正意义上的泛型。

对于编译器,每个泛型都是不同的类型,并且(当前)与它的同类泛型类型无关。这意味着铸造WorkingClassA<ParameterClassB>WorkingClassA<ParameterClassA> 没有比铸造 WorkingClassA<ParameterClassB>WorkingClassA<String>WorkingClassA<Int>

不同