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
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    greendao的基本操作
    编写clearedit的安卓控件
    获得edittext的图片大小
    设置edittext的样式
    安卓topbar编码实战
    安卓titlebar的组合控件使用
    安卓中使用iconfont
    async的用法
    fastjson解析服务端返回的数据
    安卓数据持久化
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3058056.html
Copyright © 2011-2022 走看看