当前位置: 代码迷 >> Java Web开发 >> Java中一个很奇怪的有关问题
  详细解决方案

Java中一个很奇怪的有关问题

热度:161   发布时间:2016-04-17 00:53:10.0
Java中一个很奇怪的问题
先上代码:

这里是Action中的一段代码
Java code
……List<CustomerDevote> customerDevoteList = customerDevoteService.getList();for(CustomerDevote cd : customerDevoteList) //line1{    System.out.println(cd.getCustomerName());}……



line1这一句报错:
java.lang.ClassCastException: com.…….model.Customer cannot be cast to com.…….model.CustomerDevote 


我很无语。这是为什么啊?明明返回的就是CustomerDevote泛型,为什么它会报这样的错?要怎么解决?

------解决方案--------------------
你在添加元素的时候添加的是什么类型,最好能把添加的那一段代码贴下
------解决方案--------------------
探讨

我把那个for循环改成:
Java code

for(Object o : customerDevoteList)
{
System.out.println(o.getClass().getName());
}


控制台就打印出这些东西:
com. ... .model.Customer
com. ... .model.Customer
com. ... .model.C……

------解决方案--------------------
public List<CustomerDevote> getList()
{
List<Customer> list1 = baseDao.getList(obj);
List<CustomerDevote> list2 = new ArrayList<CustomerDevote>();
int sum = 0;

for(Customer c : list1)
{
CustomerDevote cd = new CustomerDevote();//为什么不放在里面,你那个应该是只添加了一个元素,但是也应该不会出现转型问题。。有没调错函数
sum = 0;
for(Order o : c.getOrders())
{
sum += o.getTotalPrice();
}
cd.setCustomerId(c.getId());
cd.setCustomerName(c.getName());
cd.setOrderCount(c.getOrders().size());
cd.setTotalMoney(sum);
list2.add(cd);
}
return list2;
}
  相关解决方案