• java的内省(introspector)


    package com.wzh.test.introspector;
    
    import java.beans.BeanInfo;
    import java.beans.IntrospectionException;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Method;
    
    import org.junit.Test;
    
    //使用内省API操作Bean的属性
    public class Demo1 {
    
    	@Test
    	public void test() throws Exception{
    //		BeanInfo info=Introspector.getBeanInfo(Person.class);
    //		BeanInfo info=Introspector.getBeanInfo(Class.forName("com.wzh.test.introspector.Person"));
    		BeanInfo info=Introspector.getBeanInfo(Person.class,Object.class);
    		PropertyDescriptor[] pds=info.getPropertyDescriptors();
    		for(PropertyDescriptor pd : pds){
    			System.out.println(pd.getName());
    		}
    	}
    	
    	@Test
    	public void test2() throws Exception{
    		Person p=new Person();
    		PropertyDescriptor pd=new PropertyDescriptor("age", Person.class);
    		Method m=pd.getWriteMethod();
    		m.invoke(p,45);
    		
    		System.out.println("getAge:"+p.getAge());
    	}
    	
    	//获取当前操作的属性的类型
    	@Test
    	public void test3() throws IntrospectionException{
    		Person p=new Person();
    		PropertyDescriptor pd=new PropertyDescriptor("age", Person.class);
    		System.out.println(pd.getPropertyType());
    	}
    }
    

      

  • 相关阅读:
    ReentrantLock-公平锁、非公平锁、互斥锁、自旋锁
    行动的阻碍
    AQS-等待队列
    AQS-volatile、CAS
    UML类图符号
    最小堆
    红黑树
    Java面试题-Collection框架
    Java面试题-Java特性
    Qt QString中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码和转码问题
  • 原文地址:https://www.cnblogs.com/zhuawang/p/3378056.html
Copyright © 2020-2023  润新知