假设我有课程:class A : SuperType() {}class B : SuperType() {}class C : B() {}假设我不想C再扩展B():我希望它扩展A(),但现在我想A扩展B()。如何在编译时A扩展B()(或任何子级SuperType())而不是仅扩展SuperType()?换句话说,我怎样才能使类A声明通用以接受任何孩子SuperType()?希望很清楚。我想做类似的事情:class B(whatever_it_receives_as_long_as_child_of_SuperType) : whatever_it_receives_as_long_as_child_of_SuperType()class C : A(B()) // B is subtype of SuperType so it's ok
2 回答
呼如林
TA贡献1798条经验 获得超3个赞
您可以执行以下操作:
open class SuperType {}
open class A(val obj: SuperType) : B() {}
open class B : SuperType() {}
class C : A(B())
或使用泛型:
open class SuperType {}
open class A<T: SuperType>(val obj: T) : B() {}
open class B : SuperType() {}
class C : A<B>(B())
添加回答
举报
0/150
提交
取消