我想从列表中访问通用对象,但总是会收到不兼容的典型错误消息。
MyGenericContainer <Cursor> cursorContainer = new MyGenericContainer<Cursor>(c);
ArrayList <MyGenericContainer> arrayList = new ArrayList<MyGenericContainer>();
arrayList.add(cursorContainer);
Cursor cursor = arrayList.get(0).getValue();
通常有一种方法可以将通用对象放到列表中并访问每一个(没有强制转换)吗?
答案 0 :(得分:3)
你在创建arraylist时错过了什么?
这样更改它应该可以正常工作,我想:
ArrayList <MyGenericContainer<Cursor>> arrayList = new ArrayList<MyGenericContainer<Cursor>>();
答案 1 :(得分:1)
您使用原始 ArrayList
设置MyGenericContainer
。因此,编译器暗示ArrayList
将包含MyGenericContainer
个Object
实例。
要修复它,您需要设置MyGenericContainer
类型的type-parameter:
List<MyGenericContainer<Cursor>> arrayList = new ArrayList<MyGenericContainer<Cursor>>();
如果您使用的是Java7 +,那么您可以利用菱形(<>
),这将允许您输入一个不那么详细的声明:
List<MyGenericContainer<Cursor>> arrayList = new ArrayList<>();