使用反射机制 来把一个具体的bean 处理成一个map。并且获得其中的field和值

本文介绍了一个使用Java反射机制解析特定POJO类并将其转换为Tag信息的过程。通过自定义类加载器动态加载类,并利用Apache Commons BeanUtils将对象转换为Map以方便遍历和打印属性名称、值及类型。

package tester;


import org.apache.commons.beanutils.BeanMap;
import org.junit.Test;

import com.alcor.builder.generator.web.velocity.Tags;
import com.alcor.util.classloader.GreeterClassLoader;

import junit.framework.TestCase;

public class ReflectTagsTester extends TestCase {
 @Test
 public void test()throws Exception{
  Class pojo = new GreeterClassLoader("D://My Documents//project//VansBuilder//WebContent//WEB-INF//compileTemporaryFold//classes").loadClass("a.a.Cv010001");
  Tags c = new Tags();
  //针对这个pojo进行解析获得此pojo对应的tags的信息
  c.convertTags(pojo);
  //把这个bean 变成一个map
  BeanMap beanMap = new BeanMap(c);
  
        //循环打印出bean中的proerty的名称以及他的值
        for( Object propertyName :beanMap.keySet()){
         System.out.println("property: " + propertyName +"/tvalue: " + beanMap.get(propertyName) + "/t/ttype: " + beanMap.getType((String)propertyName).toString());  
        }


 }
}

 

 

注意!动态载入的这个Tags的类。其中类变量一定要有set 和get方法。否则无法获取。哪怕是这个类变量是public 也不行。这个问题在commons-beanutils-1.8.1 上存在。不知道是不是bug还是规范就是如此。。。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值