【发布时间】:2015-07-26 15:05:26
【问题描述】:
我有以下类和方法的结构:
public class NavigationTree<T extends BaseListItem<? extends BaseData>> {
public boolean insert(final T parent, final T child){
}
}
public class Screen extends BaseData {
}
public class DrawerListItem<T> extends BaseListItem<T>{
}
这是我从我的其他课程之一中调用的:
mCurItems.insert(new DrawerListItem<Screen>(null, null),
new DrawerListItem<Screen>(screen.name, screen));
编译器抛出以下错误:
错误:不兼容的类型:无法将 DrawerListItem 转换为 CAP#1,其中 CAP#1 是一个新的类型变量:CAP#1 从捕获的 ? 扩展 BaseListItem扩展 BaseListItem
我不明白为什么这是错误的。 DrawerListItem extends BaseListItem 和 Screen extends BaseData。我尝试阅读有关泛型类型和类型参数的其他帖子,但似乎都没有解决这个问题。
【问题讨论】:
-
您的错误表明您使用的是
ScreenPlay而不是Screen。它还取决于您如何初始化mCurItems。你能把那部分代码放上去吗?
标签: java generics type-parameter