【发布时间】:2018-12-28 07:16:08
【问题描述】:
所以我正在尝试创建一个通用类型适配器,因为我正在开发的 android 应用程序涉及创建许多类似的回收器视图适配器。我不断收到这个编译错误,说我的衬衫项目无法转换为项目类型。
error: incompatible types: Shirt cannot be converted to CAP#1
where CAP#1 is a fresh type-variable:
CAP#1 extends Item from capture of ? extends Item
class Shirt2ViewHolder extends BaseViewHolder<Shirt,OnRecyclerClickListener<? extends Item>> {
public Shirt2ViewHolder(View itemView) {
super(itemView);
}
@Override
public void onBind(final Shirt item, @Nullable final OnRecyclerClickListener<? extends Item> listener) {
descriptionText.setText(item.getmName());
Glide.with(itemView.getContext()).load(item.getmImageUrl()).into(imageView);
if (listener != null) {
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.onItemClicked(view,item); // error is here
}
});
}
}
}
OnRecyclerClickListener 接口:
public interface OnRecyclerClickListener<T extends Item> extends BaseRecyclerListener {
public void onItemClicked(View itemView, T item);
}
BaseRecylcer接口:
public interface BaseRecyclerListener {
}
衬衫类:
public class Shirt extends Item {
public Shirt() {}
public Shirt(String mName, String mColor, String mImageUrl) {
super(mName,mColor,mImageUrl);
}
}
由于我的 Shirt 扩展了 Item 并且在我的 OnRecyclerClickListener 我的 T 扩展了 Item 为什么仍然会出现编译错误?我已经发布了通用回收器视图的整个代码,因为它会非常混乱,所以这是现在的视图持有者类。
【问题讨论】:
标签: java android generics inheritance