[英]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.