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属性的拷贝。

 

你可能感兴趣的:(bean)