内省操作javabean的属性

 1 import java.beans.BeanInfo;
 2 import java.beans.IntrospectionException;
 3 import java.beans.Introspector;
 4 import java.beans.PropertyDescriptor;
 5 import java.lang.reflect.Method;
 6 
 7 import org.junit.Test;
 8 
 9 //使用内省api操作bean的属性
10 public class Demo {
11 
12     /**
13      * 
14      * @throws Exception 
15      *
16      */
17     //得到bean的所有属性
18     @Test
19     public void test1() throws Exception{
20         BeanInfo info = Introspector.getBeanInfo(Person.class,Object.class);
21         
22         PropertyDescriptor[] pds = info.getPropertyDescriptors();
23         
24         for(PropertyDescriptor pd : pds){
25             System.out.println(pd.getName());
26         }
27     }
28     
29     //操纵bean的指定属性:age
30     @Test
31     public void test2() throws Exception{
32         
33         Person p = new Person();
34         
35         PropertyDescriptor pd = new PropertyDescriptor("age", Person.class);
36         
37         //得到属性的写方法,为属性复制
38         Method method = pd.getWriteMethod();//public void setAge(){}
39         
40         method.invoke(p, 32);
41         
42         //获取属性的值
43         method = pd.getReadMethod();//public void getAge(){}
44         System.out.println(method.invoke(p, null));
45         
46         
47     }
48     
49     //高级点的内容,获取当前操作属性的类型
50     @Test
51     public void test3() throws Exception{
52         
53         Person p = new Person();
54         
55         PropertyDescriptor pd = new PropertyDescriptor("age", Person.class);
56         
57         System.out.println(pd.getPropertyType());
58     }
59 
60     
61 }
View Code
 1 public class Person {// javabean
 2 
 3     private String name;
 4     private String password;
 5     private int age;
 6 
 7     public String getName() {
 8         return name;
 9     }
10 
11     public void setName(String name) {
12         this.name = name;
13     }
14 
15     public String getPassword() {
16         return password;
17     }
18 
19     public void setPassword(String password) {
20         this.password = password;
21     }
22 
23     public int getAge() {
24         return age;
25     }
26 
27     public void setAge(int age) {
28         this.age = age;
29     }
30     
31     public String getAb(){
32         return null;
33     }
34 
35 
36 }
View Code

 

内省操作javabean的属性,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。