java - 返回类子类型的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? 但这涉及返回类实例,而我试图返回一个类本身。
解决方案
您需要使用?
通配符。
@Override
protected Class<? extends BaseViewHolder> getViewHolderClass() {
return MyViewHolder.class;
}
推荐阅读
- windows - Ansible Chocolatey 神秘地失败了?
- objective-c - 为什么在 Swift 中使用时 NSArray 是可变的?
- javascript - 无法从文本框获取输入
- javascript - 小写、大写、数字和最少 8 个字符的正则表达式失败
- python - Visual Studio Code 在远程文件上的使用
- c# - 以编程方式切换选项卡控件中的选项卡
- vue.js - 1秒后自动隐藏VueJS中的元素
- android - 如何在没有互联网的情况下通过内部 wifi 分发 Android 应用程序
- python - Anaconda 无法打开,我收到 CondaHTTPError: HTTP 000 错误
- javascript - 砌体 js 不使用引导选项卡