我开始使用Kotlin,我定义了这样的界面:
interface AAdapter<VH : RecyclerView.ViewHolder> {
fun onCreateAViewHolder(parent: ViewGroup): VH
fun onBindAViewHolder(v: VH, position: Int)
}
当我尝试在代码上使用它时:
class Klasa (
private val adapter: AAdapter<*>
) {
fun doSth(){
//...
val vh = this.adapter.onCreateAViewHolder(parent)
//on below line I get error
adapter.onBindAViewHolder(v, position)
//...
}
}
我收到 Out -jected type'AAdapter&lt; *&gt;'的错误禁止使用'公共抽象乐趣onBindAViewHolder(v:T,position:Int):单位
我想把“in”或“out”添加到定义中,但我很困惑。
如何允许它。
答案 0 :(得分:1)
将AAdapter<*>
替换为AAdapter<RecyclerView.ViewHolder>
。
class Klasa (
private val adapter: AAdapter<RecyclerView.ViewHolder>
) {
// ...
因为您已声明AAdapter
具有类型参数VH
,其类型是RecyclerView.ViewHolder
的任何子类。在类Klasa
中,您有一个AAdapter
的实例,它具有任何类型的类型参数。