我在继承和泛型类方面存在一些问题。我想在一个函数中返回子类的对象(具有特定的泛型类型),该函数返回具有通用元类型的父类的对象。
或多或少,我有这种类和函数的结构:
class Element {}
class Item:Element {}
class A<aType:Element> { }
class B:A<Item> { }
class SomeClass {
func foo() -> A<Element> {
return A<Element>()
}
}
class OtheClass:SomeClass {
override func foo() -> A<Element> {
return B() // An error where!
}
}
我在其他类的foo函数中无法做return B()
。错误是:
无法转换类型&#39; B&#39;的返回表达式返回类型 &#39; A&LT;元素&gt;&#39;
有什么办法吗?
答案 0 :(得分:0)
我找到的解决方案是:
class CoreElement {}
class CoreItem:CoreElement {}
class CoreA<aType:CoreElement> { }
class CoreB:CoreA<CoreItem> { }
class CoreSomeClass<T:CoreElement> {
func foo() -> CoreA<T> {
return CoreA<T>()
}
}
class CoreOtherClass:CoreSomeClass<CoreItem> {
override func foo() -> CoreA<CoreItem> {
return CoreB()
}
}