[英]java.lang.ClassCastException problem
I want to ask, 我想问问,
why java.lang.ClassCastException is triggered in my program ?? 为什么在我的程序中触发java.lang.ClassCastException?
I am not sure the reason about this, 我不确定原因是什么,
could anyone mind giving some advice for me? 有人介意给我一些建议吗?
Thanks a lot!!! 非常感谢!!!
<%@ page contentType="text/html; language=java"%>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import ="javax.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.lang.*"%>
<%!
public class Goods implements Comparable{
private String Id = null;
private String name = null;
private float price = 0.00F;
private int number = 0;
private String percent = null;
public Goods(String Id,String name,float price,int number,String percent){
this.Id = Id;
this.name = name;
this.price = price;
this.number = number;
this.percent = percent;
}
public String getId()
{
return this.Id;
}
public String getName()
{
return this.name;
}
public float getPrice()
{
return this.price;
}
public int getNumber()
{
return this.number;
}
public String getPercent()
{
return this.percent;
}
public int compareTo(Object m)
{
Goods n = (Goods)m;
int comRs = Id.compareTo(n.Id);
return comRs;
}
}
%>
<%
String id = "Comp232";
String name = "OO_JAVA";
int number = 1;
float price= 222;
String percent = "85%";
Goods goods = new Goods(id,name,price,number,percent);
//Goods shop ;
ArrayList <Goods> ay = null;
if((ArrayList)session.getAttribute("car")==null)
{
ay = new ArrayList <Goods> ();
ay.add(goods);
session.setAttribute("car",ay);
}
else
{
ay=(ArrayList)session.getAttribute("car");
if(ay.isEmpty())
{
ay.add(goods);
session.setAttribute("car",ay);
//response.sendRedirect("order_index.jsp");
}
else
{
Iterator it = ay.iterator();
//Object shop1 = it.next();
for(int i = 0;i<ay.size();i++)
{
//this statement triggers java.lang.ClassCastException
//I am not sure what the problem
Goods shop = (Goods)it.next();
//System.out.println(shop);
}}}
/*
if(shop.compareTo(goods)==0)
{
out.println("textbook ordered");
}
else
{
ay.add(goods);
session.setAttribute("car",ay);
}
}
}
}
*/
%>
You need to use Iterator<Goods>
. 您需要使用
Iterator<Goods>
。
Iterator<Goods> it = ay.iterator();
Also, you can use a foreach loop instead of using an Iterator. 另外,您可以使用foreach循环而不是使用Iterator。 Functionally, it's the same thing, but it's a lot cleaner semantically.
从功能上讲,这是同一件事,但从语义上讲它要干净得多。
for (Goods g in ay) {
// do stuff
}
Lastly, I think 最后,我认为
ay=(ArrayList)session.getAttribute("car");
should be 应该
ay = (ArrayList<Goods>)session.getAttribute("car");
this is suspect 这是可疑的
ay=(ArrayList)session.getAttribute("car");
are you sure you have set car as ArrayList in session 您确定在会话中将car设置为ArrayList
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.