JAVA异常:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.entity.Advertisem

publicStringfind_ad()throwsException{//action中的System.out.println("进入find_add");this.... public String find_ad() throws Exception {//action中的
System.out.println("进入find_add");
this.setCurrentPage(1);//设当前页为1
this.setPageSize(5);//设置每页显示条数,这两个当作参数传进去查出list
List list=advertisementDao.PageList(this.getCurrentPage(),this.getPageSize());
System.out.println(list.size());
/////////////////////下面的for是测试用来在后台输出的advertisement对象getAdName
for(int i=0;i<list.size();i++){
advertisement=(Advertisement)list.get(i);//在这一行发生错误???
System.out.println(advertisement.getAdName());
}
ActionContext.getContext().getSession().put("adlist", list);
//查询总条数
this.setTotalRows(advertisementDao.countRow());
//调用分页
pagination();
return SUCCESS;
}
/////////////////////////////DAO
public List PageList(int pageIndex,int pageSize){
System.out.println("进入PageList");
String sql="select top "+pageSize+" * from advertisement where adId not in (select top "+(pageIndex-1)*pageSize+" adId from advertisement)";
System.out.println("进入PageList2");
SessionFactory sf=this.getSessionFactory();
System.out.println("sf:"+sf==null);
Session session=sf.openSession();
System.out.println("session:"+session==null);
Transaction tx=session.beginTransaction();
List lt=session.createSQLQuery(sql).list();
tx.commit();
session.close();
}
return lt;
}

问题:在advertisement=(Advertisement)list.get(i);这里报下面的错误
,取出来的值在前台页面都是空的。错误:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.entity.Advertisement
展开
 我来答
陈学阳
推荐于2018-02-27 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2.1万
采纳率:14%
帮助的人:5472万
展开全部
类型转换错误..

比如你有个A类和B类..两个类没有任何关系..

然后你A a = new A();
B b = (B)a;
这样就运行期就会报这个异常了..

但是假如你的B类继承自A类就不会了..

如果你想避免这个错误的话..

可以在转型前检查一下..a对象是否是B类型..用instanceof关键字..

比如if(a instanceof B) 这样就行了..

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

vaela
sunchao8396789
2012-10-12 · 超过10用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:20.1万
展开全部
List<?> offlist=Sys_Pagination.getAaData();
List<Map> list=new ArrayList<Map>();
for(int i=0;i<offlist.size();i++){
Object[] obj = (Object[])offlist.get(i);
Map<String,Object> map=new HashMap<String,Object>();
map.put("maintype", obj[0]);
map.put("sectype", obj[1]);
map.put("suppliesname", obj[2]);
map.put("unit", obj[3]);
map.put("inventory", obj[4]);
map.put("sunQuant", obj[5]);
map.put("sunOutQuant", obj[6]);
map.put("appQuant", obj[7]);
list.add(map);
}
Sys_Pagination.setAaData(list);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
19990416
2010-10-12 · 超过30用户采纳过TA的回答
知道答主
回答量:106
采纳率:0%
帮助的人:88.9万
展开全部
advertisement=(Advertisement)list.get(i);

list.get(i) 取出来的不是 Advertisement

你最好这么改

if(list.get(i) instance of Advertisement){
advertisement=(Advertisement)list.get(i);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
司梓韩馀Y2
2010-10-12 · TA获得超过158个赞
知道答主
回答量:153
采纳率:0%
帮助的人:152万
展开全部
你在DAO层用的是createSQLQuery啊,你在List lt=session.createSQLQuery(sql).list();这句下断点,F6单步走一步,再看lt里面的内容,那可以说是一个字符串数组了,不能直接转换成对象的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yqzy002
2010-10-14
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
我现在也遇到这个类似的问题 报的也是这个错误..
我是一个这样的问题...
在A类中我查询出一个虚拟的结果集....但这个结果集中的一些列不是A中的属性...
现在我要把这个结果集 存在B类中....那这个list该如何和B类对应上?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式