zoukankan      html  css  js  c++  java
  • 内省(Inrospector)学习总结


    一、Introspector介绍


    内省主要为了剖析JavaBean;

    JavaBean:

    (1)一个public的类;

    (2)主要用于存储数据;

    (3)getter & setter方法;

    需要涉及Inrospector,BeanInfo,PropertyDescriptor等类;


    二、Introspector开发


    package org.xiazdong.introspector;
    
    import java.beans.BeanInfo;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Method;
    
    import org.junit.Test;
    import org.xiazdong.Person;
    
    public class IntrospectorDemo01 {
    	//获得person类的所有bean属性
    	@Test
    	public void test1() throws Exception{
    		BeanInfo info = Introspector.getBeanInfo(Person.class);
    		PropertyDescriptor[] pds = info.getPropertyDescriptors();
    		for(PropertyDescriptor pd:pds){
    			System.out.println(pd.getPropertyType()+" "+pd.getName());
    		}
    	}
    	//获得Person(不包含Object类)的所有bean属性
    	@Test
    	public void test2() throws Exception{
    		BeanInfo info = Introspector.getBeanInfo(Person.class,Object.class);
    		PropertyDescriptor[] pds = info.getPropertyDescriptors();
    		for(PropertyDescriptor pd:pds){
    			System.out.println(pd.getPropertyType()+" "+pd.getName());
    		}
    	}
    	//设置Person的age属性
    	@Test
    	public void test3() throws Exception{
    		Person p = new Person();
    		PropertyDescriptor pd = new PropertyDescriptor("age", Person.class);
    		Method method = pd.getWriteMethod();
    		method.invoke(p, 20);
    		System.out.println(p.getAge());
    	}
    	//调用Person的getAge()
    	@Test
    	public void test4() throws Exception{
    		Person p = new Person("xiazdong",30);
    		PropertyDescriptor pd = new PropertyDescriptor("age", Person.class);
    		Method method = pd.getReadMethod();
    		System.out.println(method.invoke(p, null));
    	}
    }


    作者:xiazdong
    出处:http://blog.xiazdong.info
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    中国剩余定理(SCAUOJ 1077)
    uva 11426 GCD
    LA 4119 Always an integer (数论+模拟)
    uva 12003 Array Transformer (线段树套平衡树)
    uva 10253 Series-Parallel Networks (整数划分+多重集)
    LA 4123 Glenbow Museum
    uva 11361 Investigating Div-Sum Property
    2013多校训练赛第二场 总结
    uva 11174 Stand in a Line (排列组合)
    canvas 画椭圆
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3058056.html
Copyright © 2011-2022 走看看