BeanUtils工具包

BeanUtils是一个工具类,里面的方法都是静态修饰的,可以通过类名直接调用。

      需要两个包commons-beanutils-1.9.3.jar,libs/commons-logging-1.2.jar(日志包)
      setProperty(Object bean, String name, Object value);
         参数说明:Object bean是按照JavaBean规定定义的类,这个类要求所有的成员变量私有化,
              并且对外提供对应的setter和getter方法
          String name 要赋值的属性名,这里是借助于反射的思想获取到对应的setter和getter方法
          Object value 要赋值给属性的数据
      getProperty(Object obj, String name);
      copyProperties(Object dest, Object orig);
          Object dest 是要被赋值的类对象
          Object orig 复制的源数据

package BeanUtils;

import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.BeanUtils;

public class Demo {
	public static void main(String[] args) {
		test();
	}
	public static void test() {
		//方法一:最原始的方法
		User u = new User();
		u.setName("张三");
		
		//方法二:利用BeanUtils里面的方法给对象属性赋值
		try {
			BeanUtils.setProperty(u, "age", 20);
			System.err.println("姓名:" + u.getName());
			System.out.println("年龄:" + u.getAge());
		} catch (Exception e) {
			e.printStackTrace();
		} 
		
		try {
			Class cls = Class.forName("BeanUtils.User");
			Object obj = cls.newInstance();		//可以直接调用编译器给我们的该类的无参构造方法
			
			BeanUtils.setProperty(obj, "name", "李四");
			BeanUtils.setProperty(obj, "age", 23);
			
			//这里调用User里面的getName方法,这个方法可能不存在,所以报异常NoSuchMethodException
			System.out.println("名字:" + BeanUtils.getProperty(obj, "name"));
			System.out.println("年龄:" + BeanUtils.getProperty(obj, "age"));
			
			//复制两个对象直接的属性
			BeanUtils.copyProperties(u, obj);
			System.out.println("复制之后的张三:");
			System.out.println(u);
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch(InvocationTargetException e) {
			e.printStackTrace();
		} catch(NoSuchMethodException e) {
			e.printStackTrace();
		}
	}
}

 

你可能感兴趣的:(Java)