BeanMap 使用。。。。

本文介绍了BeanMap类的基本用法及特点,BeanMap可以方便地实现PojoBean与Map之间的转换和操作,支持get、put、putAll等方法,并提供了通过BeanMap进行属性拷贝的应用场景。

BeanMap

相比于BeanCopier,BulkBean,都是针对两个Pojo Bean进行处理,那如果对象一个是Pojo Bean和Map对象之间,那就得看看BeanMap,将一个java bean允许通过map的api进行调用。
几个支持的操作接口:

  • Object get(Object key)
  • Object put(Object key, Object value)
  • void putAll(Map t)
  • Set entrySet()
  • Collection values()
  • boolean containsKey(Object key)
  • ....
public class BeanMapTest {  
  
    public static void main(String args[]) {  
        // 初始化  
        BeanMap map = BeanMap.create(new Pojo());  
        // 构造  
        Pojo pojo = new Pojo();  
        pojo.setIntValue(1);  
        pojo.setBigInteger(new BigInteger("2"));  
        // 赋值  
        map.setBean(pojo);  
        // 验证  
        System.out.println(map.get("intValue"));  
        System.out.println(map.keySet());  
        System.out.println(map.values());  
    }  
}  
  
class Pojo {  
  
    private int        intValue;  
    private BigInteger bigInteger;  
    ....  
}  
  
//反编译代码查看:  
//首先保存了所有的属性到一个set中  
private static FixedKeySet keys = new FixedKeySet(new String[] {  
        "bigInteger", "intValue"  
    });  
public Object get(Object obj, Object obj1)  
    {  
        (Pojo)obj;  
        String s = (String)obj1;  
        s;  
        s.hashCode();  
        JVM INSTR lookupswitch 2: default 72  
    //                   -139068386: 40  
    //                   556050114: 52;  
           goto _L1 _L2 _L3  
_L2:  
        "bigInteger";  
 //属性判断是否相等  
        equals();  
        JVM INSTR ifeq 73;  
           goto _L4 _L5  
_L5:  
        break MISSING_BLOCK_LABEL_73;  
_L4:  
        getBigInteger();  
        return;  
_L3:  
  
....  
  
}  

 

 

 

使用注意

  1. 避免每次进行BeanMap map = BeanMap.create();创建对象,不同于BeanCopier对象,BeanMap主要针对对象实例进行处理,所以一般建议是map.setBean(pojo);进行动态替换持有的对象实例。
  2. 应用场景:针对put,putAll操作会直接修改pojo对象里的属性,所以可以通过beanMap.putAll(map)进行map<->pojo属性的拷贝。

 

转载于:https://www.cnblogs.com/forbreak/archive/2012/10/19/2731365.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值