通用类的Arraylist

时间:2016-03-24 10:46:57

标签: java generics arraylist

我想从列表中访问通用对象,但总是会收到不兼容的典型错误消息。

MyGenericContainer <Cursor> cursorContainer = new MyGenericContainer<Cursor>(c);
ArrayList <MyGenericContainer> arrayList = new ArrayList<MyGenericContainer>();
arrayList.add(cursorContainer);
Cursor cursor = arrayList.get(0).getValue();

通常有一种方法可以将通用对象放到列表中并访问每一个(没有强制转换)吗?

2 个答案:

答案 0 :(得分:3)

你在创建arraylist时错过了什么?

这样更改它应该可以正常工作,我想:

ArrayList <MyGenericContainer<Cursor>> arrayList = new ArrayList<MyGenericContainer<Cursor>>();

答案 1 :(得分:1)

您使用原始 ArrayList设置MyGenericContainer。因此,编译器暗示ArrayList将包含MyGenericContainerObject实例。

要修复它,您需要设置MyGenericContainer类型的type-parameter:

List<MyGenericContainer<Cursor>> arrayList = new ArrayList<MyGenericContainer<Cursor>>();

如果您使用的是Java7 +,那么您可以利用菱形(<>),这将允许您输入一个不那么详细的声明:

List<MyGenericContainer<Cursor>> arrayList = new ArrayList<>();