首页 > 代码库 > 内省操作javabean的属性
内省操作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 @Test19 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的指定属性:age30 @Test31 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 @Test51 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 }
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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。