我正在尝试将具有类型参数的类的对象转换为具有更通用类型参数的同一类的对象,如以下 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 是否有不同的方法来做到这一点,或者它根本 Not Acceptable ?对我来说,“向上转换”类型参数似乎很好,但可能有充分的理由不允许这样做?
谢谢!
最佳答案
尽管这种事情可能很方便,但这并不是泛型真正的目的。
对于编译器来说,每个泛型都属于不同的类型,并且(当前)与其同级泛型类型无关。这意味着类型转换 WorkingClassA<ParameterClassB>
至WorkingClassA<ParameterClassA>
与类型转换没有什么不同
WorkingClassA<ParameterClassB>
至WorkingClassA<String>
或WorkingClassA<Int>
关于Swift:类型参数的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37080123/