您的位置:首页 > 移动开发 > Objective-C

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

2012-05-22 22:39 309 查看
         今天用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,转成常用的类型,这个问题就彻底解决了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐