我有一个类BaseViewHolder
,它是基类,它的子类是MyViewHolder
。
我有一个不同的抽象类BaseAdapter
,它需要子类来实现返回BaseViewHolder
子类的方法。我试过了:
protected abstract <T extends BaseViewHolder > Class<T> getViewHolderClass();
然后,创建一个类
MyAdapter
,它是BaseAdapter
的子类,并实现getViewHolderClass
方法:@Override
protected <T extends BaseViewHolder > Class<T> getViewHolderClass() {
return MyViewHolder.class;
}
但我得到:
Incompatible types.
Required: Class<T>
Found: Class<path.to.my.package.MyViewHolder>
如何使
getViewHolderClass
返回一个从BaseViewHolder
派生的类(当然,不必将其强制转换为更通用的类或?
)?我在StackOverflow上找到的最接近的是How do I make the method return type generic?,但这涉及到返回类实例,而我试图返回一个类本身。 最佳答案
您需要使用?
通配符。
@Override
protected Class<? extends BaseViewHolder> getViewHolderClass() {
return MyViewHolder.class;
}