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
类和data
variables的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 } }