我有一个类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;
}

10-08 17:12