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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM