Kotlin 问题“ExpandableRecyclerAdapter 类需要一个类型参数”

Dim*_*ody 1 java generics kotlin android-studio android-recyclerview

RecyclerAdapter ViewHolder 有问题

abstract class ExpandableRecyclerAdapter<T : ExpandableRecyclerAdapter.ListItem>(private val context: Context) : RecyclerView.Adapter<ExpandableRecyclerAdapter.ViewHolder>() {
    protected var allItems = ArrayList<T>()

    ...

    open inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view)
    open class ListItem(val itemType: Int = 0)  
}
Run Code Online (Sandbox Code Playgroud)

ExpandableRecyclerAdapter 中<...>带有错误下划线:

类 ExpandableRecyclerAdapter< T : ExpandableRecyclerAdapter.ListItem> 所需的一种类型参数

但是,如果我将 ViewHolder 类声明为静态(通过删除内部),错误就会消失,但这对我来说是不可接受的。

像这里这样的建议不会有帮助:Kotlin One type argument expected for class for abstract generic view holder

感谢帮助!

Kis*_*kae 5

Kotlin 不允许在不提供泛型的情况下指定泛型类型,除非您指的是类的非实例成员。(静态内部类::class,,伴生方法)。由于ViewHolder是内部类,因此在谈论类型本身时,它的身份取决于其外部类的确切规范。

这意味着您不能引用泛型ExpandableRecyclerAdapter.ViewHolder,您还必须指定外部类所在的边界。将其更改为ExpandableRecyclerAdapter<T>.ViewHolder应该可以解决问题。