`
Junjiejkl
  • 浏览: 59768 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

内省的使用

阅读更多

针对JavaBean
  什么是JavaBean?(私有的字段/公开的空参构造方法/每个字段存取方法)
  PropertyDescriptor表示:描述哪个字节码对象和该类的属性
  pd.getWriteMethod():相当于setter()方法
  pd.getReadMethod():相当于getter()方法
  BeanInfo表示:某个字节码对象的所有属性的描述
  任务类都会至少有一个class属性

package cn.itcast.javase.introspector;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import org.junit.Test;

public class Demo1 {
	@Test
	public void test1() throws Exception{
		Student s = new Student();
		//描述某个JavaBean的属性描述器
		//参数一:表示描述哪个属性
		//参数二:表示描述哪个类的字节码对象
		PropertyDescriptor pd = new PropertyDescriptor("name",Student.class);
		Method writer = pd.getWriteMethod();
		writer.invoke(s,"jack");
		System.out.println(s.getName());
	}
	@Test
	public void test2() throws Exception{
		//取得JavaBean对象的所有属性描述对象
		BeanInfo bi = Introspector.getBeanInfo(Student.class);
		//取得该JavaBean对象所有属性的集合
		PropertyDescriptor[] pds = bi.getPropertyDescriptors();
		for(PropertyDescriptor pd : pds){
			//显示属性的名称
			System.out.println(pd.getName());
		}
		//结论:属性是含有getXxxxx(),该xxxxx是属性名
	}
}







 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics