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
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    java去除string类型里面的中括号
    java深拷贝浅拷贝
    前端接受数据去除[" "]的方法
    sql 查询近6 /xx个月/天 统计数据
    vue 定时器(定时任务)
    vue 二维码判断手机登录是哪个操作系统
    Connection is read-only. Queries leading to data modification are not allowed
    redis一闪而退解决办法
    前端的模糊查找
    vue笔记生命周期里面的某些函数
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3058056.html
Copyright © 2011-2022 走看看