遇到对象类型是Object,实际却是数组的问题

         今天用Hibernate的时候写了一条select min(time),max(time) from Table的查询语句,本以为返回的List内是两个Date类型的数据,可是这样的想法却导致了一个ClassCastException
         原因是list内实际只有一个对象,并且这个对象是一个Object类型的对象,无论用getClass还是toString,但是按理来讲返回的要么是空,要么就应该是两个时间对象
于是将该数据转成json格式,得到的结果是["Tue May 22 22:31:58 CST 2012","Tue May 22 22:31:58 CST 2012"]

         很纳闷为什么输出的是一个数组类型呢,于是又将Object强转为数据,依旧ClassCastException

         苦思不得其解,于是跟踪了gson (google的json库) 的源代码,经过一个多小时的研究,终于发现了一个奇妙的东西,我想对于大多数人来说都是陌生的吧,java.lang.reflect下面有一个Array类,有一个Array.getLength()的静态方法,可以获取这个表面是Object,实际是数组的对象的长度,但是前提是得知道这个对象是数组啊,于是又有了object.getClass().isArray().
有了长度,自然就可以循环取出object内的两个时间对象了
         用Array.get(object,index)方法取出这两个时间,又发现虽然是Date对象,但却不是java.util.Date,而是java.sql.Date,当然继承的java.util.Date,转成常用的类型,这个问题就彻底解决了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值