[英]Any object that extends specified class as parameter in function
我正在建立基礎活動,在這里我有一種方法可以初始化RecyclerView
。 我希望此方法具有參數,該參數是擴展 PagedListAdapter<object, object extends RecyclerView.ViewHolder
的對象/類PagedListAdapter<object, object extends RecyclerView.ViewHolder
。
假設我有一個myAdapter
類,它擴展了PagedListAdapter<myDataObject, myAdapter.ViewHolder>
並且我想使用我的方法將myAdapter
作為適配器附加到RecyclerView
:
來自活動:
fun foo() = initRecyclerView(myAdapter())
然后在我的基地 :
protected fun initRecyclerView(mAdapter: Class<out PagedListAdapter<Any, out RecyclerView.ViewHolder>>) {
if (mRecyclerView?.layoutManager == null)
mRecyclerView?.layoutManager = component.linearLayoutManager
if (mRecyclerView?.adapter == null)
mRecyclerView?.adapter = mAdapter
}
但我得到Type mismatch
:
必需: (RecyclerView.Adapter<RecyclerView.ViewHolder>?..RecyclerView.Adapter<*>?)
找到: Class<out PagedListAdapter<Any, out RecyclerView.ViewHolder>>
如何解決此問題,使此方法“通用”,以接受任何擴展PagedListAdapter<object, any extends RecyclerView.ViewHolder>
類型PagedListAdapter<object, any extends RecyclerView.ViewHolder>
?
您的參數是Class<out PagedListAdapter<Any, out RecyclerView.ViewHolder>>
,它是類java.lang.Class
實例,但是您希望這樣的PagedListAdapter
實例:
protected fun initRecyclerView(mAdapter: PagedListAdapter<out Any, out RecyclerView.ViewHolder>) {
if (mRecyclerView?.layoutManager == null)
mRecyclerView?.layoutManager = component.linearLayoutManager
if (mRecyclerView?.adapter == null)
mRecyclerView?.adapter = mAdapter
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.