Kotlin中的每个班级都可以扩展任何班级吗?

问题描述 投票:0回答:2

[我正在为RecyclerView编写扩展功能以将LayoutManagerAdapter设置为RecyclerView。该功能应接受从RecyclerView.Adapter<Any>扩展的任何Adapter类,就像Java中一样,我们使用RecyclerView.Adapter<?> 。如何在Kotlin中做到这一点?

internal fun <T : RecyclerView.Adapter<Any>> RecyclerView.initAndSetAdapter(context: Context, adapter: T) {
    this.layoutManager = LinearLayoutManager(context)
    this.setHasFixedSize(true)
    this.adapter = adapter
}

由于类型无效,对此方法的函数调用未编译。但是如果我将Any更改为*,则它可以正常工作。

internal fun <T : RecyclerView.Adapter<*>> RecyclerView.initAndSetAdapter(context: Context, adapter: T) {
    this.layoutManager = LinearLayoutManager(context)
    this.setHasFixedSize(true)
    this.adapter = adapter
}

[为什么方法调用没有用Any类编译?.Kotlin中的每个类都像Java Any类一样扩展了Object类吗?

java android kotlin android-recyclerview
2个回答
1
投票
话虽如此-适配器需要的类需要从ViewHolder扩展。
© www.soinside.com 2019 - 2024. All rights reserved.