有关ArrayList遍历的问题 arraylist遍历 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为把food放到ArrayList中之后,food就变成object类型了,拿出来之后需要强制变换。 如果不想强制变换,可以使用泛型。 这个地方是java泛型,你开始定义arraylist的时候没有指定类型,而当你进行插入操作的时候往里面插入的是food类型,所以取出的时候需要进行类型转换,建议在定义容器时就进行指定容器存储类型,如下所示:ArrayList<food> A = new ArrayList<food>();这样取出的时候就不需要进行类型转换了,如下所示food print = A.get(i); // ******************************** 你的ArrayList没用泛型,用了就不需要强转了 ArrayList A=new ArrayList(); 问题在这里 你也可以当object对象来处理啊,只不过那样的话,就不能像你上面那么写了.可以这样写:for(int i=0;i<A.size();i++){ //ArrayList的遍历Object[] print=(Object[])A.get(i); //********************************System.out.println("第"+i+"个食品为:"+print[0]);} 还有一个问题,类名首字母大写哦。food -- Food 你好,其实你的这个问题可以不用去问的,要养成独立思考的习惯,你的这个问题看看JavaSE开发帮助文档list里面的get方法就可以一目了然了,还有就是你要注意养成良好的编码习惯,比如类的名字首字母大写,变量名字首字母要小些,像你那样写的话也没有问题,只是不太规范哦 因为把food放到ArrayList中之后,food就变成object类型了,拿出来之后需要强制变换。 如果不想强制变换,可以使用泛型。不强转的话,可以使用建议在定义容器时就进行指定容器存储类型,如下所示:ArrayList<Food> A = new ArrayList<Food>();//建议类名大写 问题1:为什么要强制转换A.get(i)? 因为你的ArrayList A=new ArrayList();并没有指定具体的类型,源代码中定义:public ArrayList() { super(); this.elementData = EMPTY_ELEMENTDATA; }private transient Object[] elementData;也就是说elementData是Object类型。如果你不强制转换,显示错误Type mismatch: cannot convert from Object to food。也就说是不能从object类型转换成food类型。你可能会想,我明明是food类型啊,为什么在集合里面变成了object类型。那么因为在A.add(a);的时候就把foot类型转换成了object类型。问题2:为什么可以强制转换A.get(i)?这个问题涉及到向上转型和向下转型。向上转型是安全的,向下转型可能是不安全的。这时候object类型转为food类型是安全的,为什么,因为a,b,c本来就是一个food实例,我们把它转回去,当然不会出错。所以说可以转。但是如果a,b,c不是food实例,转就会出现问题。建议你看看ArrayList源码和向下向上混合转型的相关知识。 JTable 如何 实现多列排序 谁会GUI编程啊?求教 一道笔试题,类继承相关,求解。 JTree折叠和展开时用+和-号显示 帮我看一下为何swing的JButton鼠标事件与JButton的setEnabled有这样情况? 想从事做JAVA软件开发,但是没有经验,基础也不怎么好,怎么办! 有关java内存的问题 求一个正则表达式 如何获取User 原字符串为 sample.model.User 计算正整数N1到N2的累加和,用WHILE语句编写 socket io流阻赛问题 关于ArrayList的疑问
ArrayList<food> A = new ArrayList<food>();
这样取出的时候就不需要进行类型转换了,如下所示
food print = A.get(i); // ********************************
ArrayList A=new ArrayList(); 问题在这里
for(int i=0;i<A.size();i++){ //ArrayList的遍历
Object[] print=(Object[])A.get(i); //********************************
System.out.println("第"+i+"个食品为:"+print[0]);
}
不强转的话,可以使用建议在定义容器时就进行指定容器存储类型,如下所示:ArrayList<Food> A = new ArrayList<Food>();//建议类名大写
因为你的ArrayList A=new ArrayList();并没有指定具体的类型,
源代码中定义:public ArrayList() {
super();
this.elementData = EMPTY_ELEMENTDATA;
}
private transient Object[] elementData;也就是说elementData是Object类型。如果你不强制转换,显示错误Type mismatch: cannot convert from Object to food。也就说是不能从object类型转换成food类型。你可能会想,我明明是food类型啊,为什么在集合里面变成了object类型。那么因为在A.add(a);的时候就把foot类型转换成了object类型。问题2:为什么可以强制转换A.get(i)?
这个问题涉及到向上转型和向下转型。向上转型是安全的,向下转型可能是不安全的。这时候object类型转为food类型是安全的,为什么,因为a,b,c本来就是一个food实例,我们把它转回去,当然不会出错。所以说可以转。但是如果a,b,c不是food实例,转就会出现问题。建议你看看ArrayList源码和向下向上混合转型的相关知识。