“纯种Object对象”强制转换

这是个非常蛋疼的问题

场景,hibernate读取数据

1
2
3
4
5
6
7
8
9
10
@Override
 public List<Object> getRankList(Date stime, Date etime, int type, int num) {
   String hql =
       "select p.content, sum(p.count) from ProfileJudgeCount p "
           " where p.type = :type and p.date between :stime and :etime "
           " group by p.content order by sum(p.count) desc limit 0," + num;
   return sessionFactory.getCurrentSession().createQuery(hql).setInteger("type", type)
       .setDate("stime", stime).setDate("etime", etime).list();
 
 }

返回的是一个Object的list,在eclipse环境下调试时的现象如图:

图一:直接查看返回的list对象l,显示如下

 

图二:点击具体的某个元素,显示如下,能够查看到里面的内容,一个字符串,一个数值,

图三:跟踪查看元素具体内容,是个数组,第一个元素是个字符串,第二个元素是个long型整数

正如图三,toString函数,得到[Ljava.lang.Object;@9654f70类似内容

尝试转换其中的元素,使用getclass函数发现,类型为Java.lang.Object,这里只能强制转换,以便于取出内容

1:自定义实体,实体属性一个字符串,一个long型整数,转换异常

2:发现类似一个JSONArray,转换异常

3:转换String[],转换异常

4:转换List,转换异常

5:转换Serializable,获取byte数组,转成字符串,能看见中文,不过存在乱码

最后转换Object[],成功,如愿,累死

posted @ 2016-09-18 15:09  迈阿密小昭  阅读(3440)  评论(2编辑  收藏  举报