在java中,我有一个bean对象(类型未知),我想把它的成员放入一个hashmap



在java中,我有一个bean对象(类型未知),我想把该bean成员的值放入一个HashMap,类成员为键。如果不使用反射,我可以这样做吗?否则,告诉我一个用反射来做的好方法beanObject = {name="raja",age="20"} to haspMapObj = {name="raja",age="20"}

正如人们所说,我试过自省器:谢谢你的回答和建议朋友。

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

,但上面只打印名字,值是空的。因为我们只传递类类型而不是对象引用。我们怎么得到这个值呢?

您可以使用Introspector获取bean的所有字段及其值。

我认为你不能不反思。对于反射,你可以这样做:

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

如果不通过框架间接使用反射,我看不到任何可能性。

如果你看一下Apache Commons Beanutils,你可能会发现一些有用的方法:

http://commons.apache.org/beanutils/

指定:http://commons.apache.org/beanutils/v1.8.3/apidocs/org/apache/commons/beanutils/BeanMap.html

致以最亲切的问候!

你可以使用基于反射的自省: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

相关内容

  • 没有找到相关文章

最新更新