java - Kotlin 问题 “One type argument expected for class ExpandableRecyclerAdapter”

标签 java android-studio generics kotlin 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)  
}

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

One type argument expected for class ExpandableRecyclerAdapter< T : ExpandableRecyclerAdapter.ListItem>

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

此处的建议不会有帮助:Kotlin One type argument expected for class for abstract generic view holder

感谢您的帮助!

最佳答案

Kotlin 不允许在不提供泛型的情况下指定泛型类型,除非您指的是类的非实例成员。 (静态内部类,::class,配套方法)。自 ViewHolder是一个内部类,当谈到类型本身时,它的标识取决于其外部类的确切规范。

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

关于java - Kotlin 问题 “One type argument expected for class ExpandableRecyclerAdapter”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54267436/

相关文章:

java - 如何编写通用的 Guice 绑定(bind)函数?

java - 调用泛型类型

java - session.persist() 方法混淆

java - 线程完成后调用函数

android - 如何通过链接引用将模块导入到android studio中?

java - 如何在运行应用程序时修复 android studio 3.6.2 版中的 "Cannot parse result path string:"错误?

java - 无法解析符号

Silverlight 4 支持 x :TypeArguments

java - Maven:如何覆盖依赖关系

java - 如何创建从单个节点相对于图中距离传播的边