Java学习笔记之

public class Demo {

	public static void main(String[] args) throws Exception {
		//获取Class对象
		Class c = Class.forName("com.qq.java.javabean.Student");
		//获取Constructor对象
		Constructor constructor = c.getConstructor();
		Student stu = (Student) constructor.newInstance();
	
		/*通过反射机制来设置读取JavaBean的属性*/
		Method m = c.getMethod("setName",String.class);
		m.invoke(stu, "Jack");
		m = c.getMethod("getName");
		System.out.println(m.invoke(stu));
		
		
		/*使用内省机制*/
		//获取BeanInfo(封装了JavaBean属性的)
		BeanInfo beanInfo = Introspector.getBeanInfo(c);
		//属性描述器
		PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
		String property = null;
		for (PropertyDescriptor pd : pds) {
			if (!(property = pd.getName()).equals("class")) {
				Method m2 = pd.getWriteMethod();  //获取setXX的方法
				if (property.equals("name")) {
					m2.invoke(stu, "LiLi");
				}
				Method m3 = pd.getReadMethod();  //获取getXX的方法
				if (property.equals("name")) {
					System.out.println(m3.invoke(stu));
				}
				
			}
		}
		
		/*使用BeanUtils包,一般Utils包里面的方法都是静态的*/
		BeanUtils.setProperty(stu, "name", "Wang wu");
		System.out.println(BeanUtils.getProperty(stu, "name"));
		/*由上面可以看到用BeanUtils包非常方便*/
		
		
	}

}



因为JavaBean是一个具有public的无参构造方法,私有属性,提供getXX(),setXX()方法的类,所以操作的也是getXX,setXX  

用BeanUtils能较为方便的操作JavaBean。

你可能感兴趣的:(Java)