[英]Swift: Inheritance in type parameters
我正在尝试将具有类型参数的类的对象转换为具有更通用类型参数的相同类的对象,如以下Swift代码所示:
class ParameterClassA {
}
class ParameterClassB: ParameterClassA {
}
class WorkingClassA<T> {
}
class WorkingClassB: WorkingClassA<ParameterClassB> {
}
let object1 = WorkingClassB()
let object2: WorkingClassA<ParameterClassA> = object1
不幸的是,而且也许正如预期的那样,这是行不通的,因为无法将WorkingClassA<ParameterClassB>
向下转换为WorkingClassA<ParameterClassA>
-我知道Java不允许这样做,我希望Swift能够更好地支持此类构造。
Swift是否有另一种方法可以做到这一点,还是根本无法接受? 对我来说,“转换”类型参数似乎很好,但是可能有充分的理由不允许它?
谢谢!
尽管这种事情很方便,但泛型实际上并不是要做什么。
对于编译器,每个泛型具有不同的类型,并且(当前)与其同级的泛型类型无关。 这意味着将WorkingClassA<ParameterClassB>
为WorkingClassA<ParameterClassA>
与将WorkingClassA<ParameterClassB>
为WorkingClassA<String>
或WorkingClassA<Int>
没有什么不同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.