“纯种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[],成功,如愿,累死