java.lang.ClassCastException问题

时间:2011-01-25 15:37:34

标签: java exception jsp

我想问一下,

为什么在我的程序中触发了java.lang.ClassCastException?

我不确定这个的原因,

有人会介意给我一些建议吗?

非常感谢!!!

<%@ 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);

                    }
                }
            }
        }
    */
%>

2 个答案:

答案 0 :(得分:2)

您需要使用Iterator<Goods>

Iterator<Goods> it = ay.iterator();

此外,您可以使用foreach循环而不是使用Iterator。从功能上讲,它是一样的,但它在语义上更加清晰。

for (Goods g in ay) {
    // do stuff
}

最后,我想

ay=(ArrayList)session.getAttribute("car");

应该是

ay = (ArrayList<Goods>)session.getAttribute("car");

答案 1 :(得分:1)

这是可疑的

 ay=(ArrayList)session.getAttribute("car");

您确定在会话

中将car设置为ArrayList