简体   繁体   中英

java.lang.ClassCastException problem

I want to ask,

why java.lang.ClassCastException is triggered in my program ??

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> it = ay.iterator();

Also, you can use a foreach loop instead of using an 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM