首页 > 解决方案 > 返回类子类型的Java方法(不是实例,类本身)

问题描述

我有一个 class BaseViewHolder,它是一个基类,以及它的一个子类,MyViewHolder.

我有一个不同的抽象类,BaseAdapter它需要子类来实现一个返回BaseViewHolder. 我试过了:

protected abstract <T extends BaseViewHolder > Class<T> getViewHolderClass();

然后我创建一个 class 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? 但这涉及返回类实例,而我试图返回一个类本身

标签: javagenerics

解决方案


您需要使用?通配符。

@Override
protected Class<? extends BaseViewHolder> getViewHolderClass() {
    return MyViewHolder.class;
}

推荐阅读