我有以下类和方法的结构:
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
。我曾尝试阅读围绕泛型类型和类型参数的其他帖子,但它们似乎都没有解决这个问题。
答案 0 :(得分:0)
试试这个:
;One plus %SingleBootLoaderInterface% = USB_Install,
USB\**user device hardware ids** %CompositeAdbInterface% = USB_Install,
USB\**user device hardware ids**
答案 1 :(得分:0)
我找到了解决方案。在我的DrawerListItem声明中,我已将其声明为
public class DrawerListItem<T> extends BaseListItem<T>{
}
而NavigationTree期待:
<T extends BaseListItem<? extends BaseData>>
本质上意味着:
<DrawerListItem<? extends BaseData>>
在这种情况下。
因此错误基本上是说声明的模板类型与所需的模板类型不同,因而错误。 希望这有助于其他人。 谢谢大家的帮助!