关于集合泛型的问题.. 高分求助..

rayson0405 2009-04-20 11:27:28
各位好:

现在有以下代码..


List<Object> objList = obj.methodName(params....);
// obj.methodName();这个方法返回的是一个List<Object> 而实际上这个Object可能是任何我自定义的对象..如(Address,User,Resource)..


然后我希望把List<Object> 转换成 List<Address>对象,我应该如何转换呢. ?

(如果是迭代,我感觉比较麻烦,且效率较低,强制类型转换报语法错误.有没有其他的办法呢. ?)

粘贴出实际的代码 :

@Override
public List<AddressBean> list() throws Exception {
// HibernateDAOUtil.getObjectList 方法内部实现就是. HibernateDAOUtil
//.getSession().createCriteria(AddressBean.class).list()
List<Object> list = HibernateDAOUtil.getObjectList(AddressBean.class, null);
return List<AddressBean> list;
}


现在这段代码 return List<AddressBean> list;这里如果强制类型转换的话,报语法错误..
有什么其他解决问题的办法吗.?
先谢过了..
...全文
65 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyangqinxin 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jinxfei 的回复:]
Java code
@Override
public List<AddressBean> list() throws Exception {
// HibernateDAOUtil.getObjectList 方法内部实现就是. HibernateDAOUtil
//.getSession().createCriteria(AddressBean.class).list()
List<Object> list = HibernateDAOUtil.getObjectList(AddressBean.class, null);

List<AddressBean> result=new ArrayList<AddressBean>();

[/Quote]
其实Hibernate事务很关键的!
ouyangqinxin 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 suwanjun881011 的回复:]
Java code
List<AddressBean> list = HibernateDAOUtil.getObjectList(AddressBean.class, null);
return list;
[/Quote]
不错!
jinxfei 2009-04-20
  • 打赏
  • 举报
回复

@Override
public List<AddressBean> list() throws Exception {
// HibernateDAOUtil.getObjectList 方法内部实现就是. HibernateDAOUtil
//.getSession().createCriteria(AddressBean.class).list()
List<Object> list = HibernateDAOUtil.getObjectList(AddressBean.class, null);

List<AddressBean> result=new ArrayList<AddressBean>();
result.addAll(list);
return result;
}


suwanjun881011 2009-04-20
  • 打赏
  • 举报
回复

List<AddressBean> list = HibernateDAOUtil.getObjectList(AddressBean.class, null);
return list;
rayson0405 2009-04-20
  • 打赏
  • 举报
回复


List<AddressBean> list = HibernateDAOUtil.getObjectList(AddressBean.class, null);
return list;


这么写不行..

因为 HibernateDAOUtil.getObjectList(AddressBean.class, null);
的返回结果.. 是 List<Object>

方法签名如下:


public static List<Object> getObjectList(Class className, List<HqlParam> params) throws Exception {
return executeHibernateQueryList(buildHqlBySqlParams("from " + className.getSimpleName(), params), params);
}

包括强制类型转换也不行


//语法报错.
List<AddressBean> list = (List<AddressBean>) HibernateDAOUtil.getObjectList(AddressBean.class, null);
return list;



自己找到解决办法了..


解决办法..
1:

public static List<?> getObjectList(Class className, List<HqlParam> params) throws Exception {
return executeHibernateQueryList(buildHqlBySqlParams("from " + className.getSimpleName(), params), params);
}

泛型类型设置为? . 或者不使用泛型~.. 返回结果就直接一个List

然后在代码中..

List<AddressBean> bean = (List<AddressBean>) HibernateDAOUtil.getObjectList(AddressBean.class, null);



谢谢楼上几位了..

ouyangqinxin 能说说hibernate处理的高见吗 ? 我现在知道的事务处理方法用Filter控制, 或用Spring..

还有啥别的办法吗. ? ouyangqinxin ~
rayson0405 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ouyangqinxin 的回复:]
引用 2 楼 jinxfei 的回复:
Java code
@Override
public List <AddressBean> list() throws Exception {
// HibernateDAOUtil.getObjectList 方法内部实现就是. HibernateDAOUtil
//.getSession().createCriteria(AddressBean.class).list()
List <Object> list = HibernateDAOUtil.getObjectList(AddressBean.class, null);

List <AddressBean> resu…
[/Quote]

"其实Hibernate事务很关键的!"

能说说这句话的高见吗. ?

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧