Java 泛型类的Arraylist
我想从列表中访问泛型对象,但总是收到不兼容的typs错误消息Java 泛型类的Arraylist,java,generics,arraylist,Java,Generics,Arraylist,我想从列表中访问泛型对象,但总是收到不兼容的typs错误消息 MyGenericContainer <Cursor> cursorContainer = new MyGenericContainer<Cursor>(c); ArrayList <MyGenericContainer> arrayList = new ArrayList<MyGenericContainer>(); arrayList.add(cursorContainer); Cu
MyGenericContainer <Cursor> cursorContainer = new MyGenericContainer<Cursor>(c);
ArrayList <MyGenericContainer> arrayList = new ArrayList<MyGenericContainer>();
arrayList.add(cursorContainer);
Cursor cursor = arrayList.get(0).getValue();
MyGenericContainer cursorContainer=新的MyGenericContainer(c);
ArrayList ArrayList=新的ArrayList();
arrayList.add(游标容器);
Cursor Cursor=arrayList.get(0.getValue();
一般来说,有没有一种方法可以将泛型对象放到列表中并访问每个对象(无需强制转换)?在创建arraylist时,您是否遗漏了一些内容 像这样改变它,我想应该可以很好地工作:
ArrayList <MyGenericContainer<Cursor>> arrayList = new ArrayList<MyGenericContainer<Cursor>>();
ArrayList ArrayList=new ArrayList();
您在创建arraylist时是否遗漏了一些内容
像这样改变它,我想应该可以很好地工作:
ArrayList <MyGenericContainer<Cursor>> arrayList = new ArrayList<MyGenericContainer<Cursor>>();
ArrayList ArrayList=new ArrayList();
您正在设置使用原始MyGenericContainer
键入的ArrayList
。因此,编译器意味着ArrayList
将由MyGenericContainer
的Object
实例组成
为了修复它,您需要设置MyGenericContainer
type的type参数:
List<MyGenericContainer<Cursor>> arrayList = new ArrayList<MyGenericContainer<Cursor>>();
List arrayList=new arrayList();
如果您使用的是Java7+,那么您可以利用菱形(
),这将允许您键入不太详细的声明:
List<MyGenericContainer<Cursor>> arrayList = new ArrayList<>();
List arrayList=new arrayList();
您正在设置使用原始MyGenericContainer
键入的ArrayList
。因此,编译器意味着ArrayList
将由MyGenericContainer
的Object
实例组成
为了修复它,您需要设置MyGenericContainer
type的type参数:
List<MyGenericContainer<Cursor>> arrayList = new ArrayList<MyGenericContainer<Cursor>>();
List arrayList=new arrayList();
如果您使用的是Java7+,那么您可以利用菱形(
),这将允许您键入不太详细的声明:
List<MyGenericContainer<Cursor>> arrayList = new ArrayList<>();
List arrayList=new arrayList();
我想你可能想补充一点,他可以使用菱形操作符;没有必要重复类型信息。谢谢,@Jägermeister,我会的。谢谢你的回答。但我通常希望将来自不同类的对象放在列表中,比如:new ArrayList ArrayList=new ArrayList();添加(新字符串());add(新整数());int a=arrayList.get(1)//需要强制转换
我想用泛型解决这个问题(不需要强制转换)。如果你想放置不同类型的对象,那么你必须进行强制转换,因为编译器无法知道你在运行时将放置什么对象。@logerom你可以要它,但它不能实现这一点。你必须进行强制转换,或者更好,用正确类型的字段编写你自己的类,而不是像你试图做的那样滥用ArrayList;没有必要重复类型信息。谢谢,@Jägermeister,我会的。谢谢你的回答。但我通常希望将来自不同类的对象放在列表中,比如:new ArrayList ArrayList=new ArrayList();添加(新字符串());add(新整数());int a=arrayList.get(1)//需要强制转换
我想用泛型解决这个问题(不需要强制转换)。如果你想放置不同类型的对象,那么你必须进行强制转换,因为编译器无法知道你在运行时将放置什么对象。@logerom你可以要它,但它不能实现这一点。您将不得不执行强制转换,或者更好地使用正确类型的字段编写您自己的类,而不是像您试图做的那样滥用ArrayList。