2011-04-27 91 views
0

在java中我有一个bean对象(类型未知)我想将该成员的值放入一个HashMap以类成员为关键。如果没有使用反射,我可以这样做吗?否则告诉我一个很好的方式使用反射 beanObject =做到这一点{名称=“拉贾”,年龄=“20”}到haspMapObj = {名称=“拉贾”,年龄=“20”}在java中我有一个bean对象(类型未知)我想把它的成员放到一个hashmap中

随着人们你说我试图introspector: 谢谢你的回答,并建议朋友。

 Class myClass =myObj.getClass(); 
    info = Introspector.getBeanInfo(myClass); 
    for (PropertyDescriptor pd : info.getPropertyDescriptors()){ 
     String name = pd.getName(); 
     System.out.println("*************"+name+","+ pd.getValue(name)); 
    } 

但上述内容仅打印名称值为空。 bcoz我们只传递类类型而不是对象引用。我们如何做才能获得价值?

回答

1

您可以使用Introspector来获取bean的所有字段及其值。 (此包反射)

0

您可以使用自省,这是基于反射: http://download.oracle.com/javase/6/docs/api/java/beans/Introspector.html

但究竟是什么到底想要做什么?也许有一个更好的办法...

要从PropertyDescriptor的PD获得的价值:

Object value = pd.getReadMethod().invoke(myObj, new Object[]{}); 

注意,前一段时间我写了一个实用工具类,它可能对您有用:

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/beans/BeanIntrospector.html

+0

这是在java 5吗? – Anbu 2011-04-27 12:09:10

+0

没问题,这个类已经存在很久了:http://download.oracle.com/javase/1.5.0/docs/api/java/beans/Introspector.html 但是考虑升级到Java SE 6,随着Java SE 5到达EOL。 – Puce 2011-04-27 12:10:34

+0

看到上述回复你的答案 – Anbu 2011-04-27 14:08:05

0

我认为你不能没有反思就做到这一点。有了反射,你可以做这样的事情:

Map<String, Field> map = new HashMap<String, Field>(); 
    Field[] fields = object.getClass().getDeclaredFields(); 
    for (Field field : fields) { 
     map.put(field.getName(), field); 
    } 
相关问题