我有一个类@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new AsyncTask<Void, Void, Void>(){
@Override
protected Void doInBackground(Void... voids) {
initBluetooth(); //Perform any operations
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
startActivity(Bluetooth.this, register.java);
}
}.execute();
}
(它是基类)和它的子类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
的类(而不必将其强制转换为更通用的类或{ {1}},当然)?我在StackOverflow上找到的最接近的是How do I make the method return type generic?,但这涉及到返回类 instances ,而我正在尝试返回一个类本身。
答案 0 :(得分:2)
您需要使用File folder
通配符。
(Ext) File
答案 1 :(得分:1)
getViewHolder
方法不需要通用,它可以返回Class<? extends BaseViewHolder>
。
代码无法编译的原因是返回类型始终为Class<MyViewHolder>
,尽管通用方法签名暗示了返回类型,但不允许进行adapter.<AnotherViewHolder>getViewHolder()
之类的调用。
答案 2 :(得分:0)
您需要将MyAdapter
的{{1}}指定为T
:
MyViewHolder