在java中将参数传递给带有泛型的方法

时间:2015-07-26 15:05:27

标签: java generics type-parameter

我有以下类和方法的结构:

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 BaseListItemScreen extends BaseData。我曾尝试阅读围绕泛型类型和类型参数的其他帖子,但它们似乎都没有解决这个问题。

2 个答案:

答案 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>>

在这种情况下。

因此错误基本上是说声明的模板类型与所需的模板类型不同,因而错误。 希望这有助于其他人。 谢谢大家的帮助!