Tag: 嵌套泛型

kotlin中的高阶(或递归?)泛型类型参数

我正在对一些高度声明的代码进行原型设计,Kotlin附带的类型推断和安全性也有很大帮助。 其中一个目标是使主要类型的扩展(子类)很容易实现。 为了保持丰富的类型推理和表现力,我在定义针对子类的通用扩展函数方面取得了一些成功。 所有的子类方法的类型信息都没有额外的子类实现,这是很好的。 所以我试图写一个丰富的通用函数,尽可能多地保持类型信息。 这个问题随着这个函数对潜在的递归泛型类型进行操作,我想要对泛型类型参数进行混洗。 没有一个例子,这是不可能的。 所以考虑: open class G<in T> class A<in T> : G<T>() class B<in T> : G<T>() class C<in T> : G<T>() val ba = B<A<*>>() val cb = C<B<*>>() 除了一般情况,我们需要一个可以有效执行此操作的函数 fun B<A<*>>.doTransitiveThing(c: C<B<*>>) : C<A<*>> { // implement } val ca = ba.doTransitiveThing(cb) // Returns C<A<*>> 目标标准: 将C作为参数并返回C ,但使用不同的泛型类型参数 […]