我在Kotlin有一个抽象课:
abstract class SimpleRecyclerAdapter<VH : SimpleRecyclerAdapter.Holder, D> constructor(
context: Context,
var data: MutableList<D>
): RecyclerView.Adapter<VH>() {
//inner class inside main
abstract class Holder constructor(view: View) : RecyclerView.ViewHolder(view) {}
}
一切正常,但我的内部班Holder
没有看到D
类和outer
变量的data
参数
如果我将Holder
类标记为inner
类,则:
abstract inner class Holder constructor(view: View) : RecyclerView.ViewHolder(view) {}
D参数现在可见,但这里
SimpleRecyclerAdapter<VH : SimpleRecyclerAdapter.Holder, D>
我收到错误"2 type arguments expected for class..."
在这里RecyclerView.Adapter<VH>
"expected RecyclerView.ViewHolder, found VH"
- 似乎VH
不可见。
我哪里错了?我在D
类中需要一个inner
参数,但是使用内部关键字它不起作用。
答案 0 :(得分:1)
要修复添加inner
修饰符时遇到的错误,需要在内部类中指定外部类的类型参数&#39;使用网站:
abstract class SimpleRecyclerAdapter<VH : SimpleRecyclerAdapter<VH, D>.Holder, D>
^^^^^^^
完整的代码:
abstract class SimpleRecyclerAdapter<VH : SimpleRecyclerAdapter<VH, D>.Holder, D> (
context: Context,
var data: MutableList<D>
): RecyclerView.Adapter<VH>() {
//inner class inside main
abstract inner class Holder constructor(view: View) : RecyclerView.ViewHolder(view) {
fun foo(d: D) = Unit // D is visible here
}
}