Kotlingenerics抽象类

我在Kotlin有一个抽象类:

abstract class SimpleRecyclerAdapter constructor( context: Context, var data: MutableList ): RecyclerView.Adapter() { //inner class inside main abstract class Holder constructor(view: View) : RecyclerView.ViewHolder(view) {} } 

一切工作正常,但我的内部类Holder没有看到outer类和datavariables的D参数

如果我把Holder类标记为inner类:

 abstract inner class Holder constructor(view: View) : RecyclerView.ViewHolder(view) {} 

D参数现在可见,但在这里

 SimpleRecyclerAdapter 

即时通讯得到一个错误"2 type arguments expected for class..."和在这里RecyclerView.Adapter "expected RecyclerView.ViewHolder, found VH" – 似乎像VH是不可见的。 我在哪里错了? 我需要一个inner类中的D参数,但内部关键字不工作。

要修复添加inner修饰符时遇到的错误,您需要在内部类的use site中指定外部类的types参数:

 abstract class SimpleRecyclerAdapter.Holder, D> ^^^^^^^ 

和完整的代码:

 abstract class SimpleRecyclerAdapter.Holder, D> ( context: Context, var data: MutableList ): RecyclerView.Adapter() { //inner class inside main abstract inner class Holder constructor(view: View) : RecyclerView.ViewHolder(view) { fun foo(d: D) = Unit // D is visible here } }