常用的工具类

http://hi.baidu.com/laopin10/blog/item/6f09eb3f364d57f3838b1330.html
package apache.commons.lang.test;

import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;

import apache.commons.lang.test.model.Model;
import apache.commons.lang.test.model.Sub;

public class BeanUtilsTest2 {
	public static void main(String[] args) throws Exception {
		Model model = new Model();
		Sub sub = new Sub();
		sub.setDesc("我是嵌套对象");
		model.setSub(sub);
		BeanUtils.copyProperty(model, "name", "名称");
		
		System.out.println(model.getName());
		// 返回属性名---属性值 Map
		Map map = BeanUtils.describe(model);
		model.setMap(map);
		System.out.println(map.get("name"));

		String[] hobbys = new String[] { "篮球", "台球" };
		model.setHobbys(hobbys);

		// 针对数组属性的操作
		System.out.println(BeanUtils.getIndexedProperty(model, "hobbys[1]"));
		// 针对Map属性的操作
		String value = BeanUtils.getMappedProperty(model, "map(class)");
		System.out.println(value);
		//得到嵌套对象的属性
		System.out.println(BeanUtils.getNestedProperty(model, "sub.desc"));
		//得到一般的属性
		System.out.println(BeanUtils.getProperty(model, "name"));
		
		//浅的拷贝
		Model model2= (Model) BeanUtils.cloneBean(model);
		//这里还是返回的true,属性只是简单的拷贝引用
		System.out.println(model2.getSub()==sub);
	}
} 

 BeanUtils   通过反射动态的拷贝一个对象的属性到另个对象。

 

 package apache.commons.lang.test;

import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.BeanUtils;

import apache.commons.lang.test.model.Model;
import apache.commons.lang.test.model.Sub;
import apache.commons.lang.test.model.UI;

public class BeanUtilsTest {
	public static void main(String[] args) {
		// BeanUtils utils = new BeanUtils();
		UI ui = new UI();
		Sub sub = new Sub();
		sub.setDesc("aaaaaa");
//		System.out.println("source:" + sub);
		ui.setName("aaa");
		ui.setSub(sub);

		Model model = new Model();
		try {
			// 拷贝两个对象的∩,并且如果是对象的话只拷贝引用,并不会递归进去深层的seter

			BeanUtils.copyProperties(model, ui);
			System.out.println(model.getAge());
			System.out.println(model.getName());
			System.out.println(model.getSub());
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

你可能感兴趣的:(工具类)