内省操作javabean
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
package enums;
import java.beans.BeanInfo;
import java.beans.IntrospectionException; import java.beans.Introspector;
import java.beans.PropertyDescriptor; import ng.reflect.Method;
import org.junit.Test;
public class Introspec {
@Test
public void test1() throws Exception{//获得Bean的属性
BeanInfo
info=Introspector.getBeanInfo(Person1.class ,Object.class);//得到自己的属性,去除从Object类继承过来的属性
PropertyDescriptor[] pds =
info.getPropertyDescriptors();
for(PropertyDescriptor pd:pds){
System.out.println(pd.getName());
}
}
@Test
public void test2() throws Exception{//操作Bean的属性
Person1 p=new Person1();
PropertyDescriptor pd=new PropertyDescriptor("age",Person1.class);
//获得到属性的写方法,为属性赋值
Method method=pd.getWriteMethod();
method.invoke(p, 50);
//获取属性的值
method=pd.getReadMethod();
System.out.println(method.invoke(p, null));
}
@Test
public void test3() throws Exception{//操作Bean的属性
Person1 p=new Person1();
PropertyDescriptor pd=new PropertyDescriptor("age",Person1.class);
System.out.println(pd.getPropertyType()); //获取属性的类型
}
}
class Person1{
private String name;
public String getAb(){
return null;
}
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) { this.password = password;
}
public int getAge() {
return age;
public void setAge(int age) { this.age = age;
}
private String password;
private int age;
}