【发布时间】:2016-12-26 08:03:59
【问题描述】:
我有通用类 - Class1。
class Class1<T> {
}
我有 Class2 变量 object1 类型为 Class1 和泛型类型 UIView
class Class2 {
var object1: Class1<UIView>?
}
当我创建Class2 的实例并尝试分配给object1 类型Class1 和泛型类型UITableView 的实例时,我收到一个错误:“无法将Class1<UITableView> 类型的值分配给Class1<UIView> 类型"
var c = Class2()
c.object1 = Class1<UITableView>()
不过,同样的逻辑也适用于 Array。为什么?
【问题讨论】:
-
我认为
Array类型发生了一些编译器魔法。从技术上讲,Generic<Supertype>与Generic<Subtype>的类型不同,您不能将后者的值分配给前者的属性。但在数组的情况下,你可以看到它确实有效。 -
This answer 可能对您要查找的内容有用...