Swift Generic Class无法分配给子类

时间:2017-02-17 14:17:35

标签: ios swift generics swift3

我有A类:

class A<T: MyTypeClass>
{
}

和B级

class B<T: MyTypeClassSubclass>: A<T>
{
}

让我们说MyTypeClassSubclass延伸MyTypeClass

斯威夫特不允许我这样做:

var variable: A<MyTypeClass> = B<MyTypeClassSubclass>() 

如果我写的话:

var variable: A<MyTypeClass> = B<MyTypeClassSubclass>() as! A<MyTypeClass>

编译器只给出警告,应用程序在运行时崩溃。

我尝试使用类型擦除但是它不起作用,因为在我的情况下,它从A类开始,女巫已经是通用的。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

在处理Generic类型时,Swift中不允许使用超类型和子类型。在子类的上下文中使用泛型时,类型必须相同。