如何将arraylist投射到一个班级

时间:2016-04-26 14:45:33

标签: java classcastexception

我正在购买购物车,并且我发现ArrayList无法投放到ShoppingCart的例外情况。如何将ArrayList投射到此课程?

代码

ShoppingCart shoppingCart;
shoppingCart = (ShoppingCart) session.getAttribute("shoppingCart");
if(shoppingCart == null){
    shoppingCart = new ShoppingCart();
}

我收到了这个错误

java.lang.ClassCastException: java.util.ArrayList cannot be cast to business.ShoppingCart

指向

shoppingCart = (ShoppingCart) session.getAttribute("shoppingCart");

1 个答案:

答案 0 :(得分:1)

您无法将ArrayList投放到Object以外的某个类或ListCollection以外的其他界面。

您可以做的最好的事情是ArrayList转换为<{1}}到您的ShoppingCart课程中,例如:

ShoppingCart cart = null;
Object cart_object  = session.getAttribute("shoppingCart");
if (cart_object instanceof ArrayList) {
    ArrayList cart_list = (ArrayList) cart_object;
    cart = new ShoppingCart(cart_list);
}

或者,您可以构建一个新的购物车,并将列表的内容添加到其中:

ShoppingCart cart = new ShoppingCart();
Object cart_object  = session.getAttribute("shoppingCart");
if (cart_object instanceof ArrayList) {
    ArrayList cart_list = (ArrayList) cart_object;
    for(Object item : cart_list) {
        cart.add(item);
    }
}

但究竟如何或您需要做什么取决于ShoppingCart类的实施细节。