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
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    配送单MYSQL ,一点都不机智
    强哥新周报SQL
    SQL 交叉连接与内连接
    pycharm git 提交使用情况
    MYSQL freedata 外联接
    SQL 添加字段
    邮件发送方法代码时
    调通有赞接口数据,翻页获取
    superset dashboard 设置自动刷新
    python 语法错误记录
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3058056.html
Copyright © 2011-2022 走看看