日期:2014-05-18  浏览次数:20723 次

高分求教求懂得java反射机制的大神指点~
[size=18px]我用的hibernate读出来的list<Object[]>,我想转成List<Map>
想用Field反射获取Object的标示名称啊 给map用
我知道思路但是不知道怎么实现
郁闷
[/size]

------解决方案--------------------

定大神出来
------解决方案--------------------
顶大神出来
------解决方案--------------------
http://blog.csdn.net/snihcel/article/details/7270502

看看这个
------解决方案--------------------
参照我这里最简单的列子自己写就行了:http://blog.csdn.net/withiter/article/details/8859399
------解决方案--------------------
忘了 坐等大神复习
------解决方案--------------------
hibernate返回的这个List<Object[]>这个object[]里面的元素并不一定就都是实体类的对象,如果楼主的sql查询的不是一个实体类的对象,而是得到一些字段的集合的话这个object[]里面装的就有可能是那些查询出来的字段的数组.这样的话就会变成[int,String,boolean,...]等等数据数组.
如果楼主确实查询的是一个实体类对象的话也不要用什么反射了,直接用commons-beanUtils工具类

public List<Map> reflectObjToMap(List<Object[]> list){
    List<Map> list=new ArrayList<Map>(); 
    for(Object[] object:list){
        for(Object obj:object){
            Map map=BeanUtils.describe(obj);
            list.add(map);
        }
    }
    return list;    
}

------解决方案--------------------
引用:
Quote: 引用:

参照我这里最简单的列子自己写就行了:http://blog.csdn.net/withiter/article/details/8859399


麻烦看我代码:

public void reflectObjToMap(List<Object[]> list){

for(Object[] object:list){
for(Object obj:object){
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {

System.out.println(field.getName());

}
}

}


楼上说了,你可以将obj打印出来看看
------解决方案--------------------
引用:
Quote: 引用:

参照我这里最简单的列子自己写就行了:http://blog.csdn.net/withiter/article/details/8859399
大神?求指点代码。。。

只需要打开Eclipes然后就复制进去运行就可以了。很简单的。
另外就我个人经验,实