内省操作javabean的属性

时间:2023-03-09 08:41:03
内省操作javabean的属性
 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 Demo { /**
*
* @throws Exception
*
*/
//得到bean的所有属性
@Test
public void test1() throws Exception{
BeanInfo info = Introspector.getBeanInfo(Person.class,Object.class); PropertyDescriptor[] pds = info.getPropertyDescriptors(); for(PropertyDescriptor pd : pds){
System.out.println(pd.getName());
}
} //操纵bean的指定属性:age
@Test
public void test2() throws Exception{ Person p = new Person(); PropertyDescriptor pd = new PropertyDescriptor("age", Person.class); //得到属性的写方法,为属性复制
Method method = pd.getWriteMethod();//public void setAge(){} method.invoke(p, 32); //获取属性的值
method = pd.getReadMethod();//public void getAge(){}
System.out.println(method.invoke(p, null)); } //高级点的内容,获取当前操作属性的类型
@Test
public void test3() throws Exception{ Person p = new Person(); PropertyDescriptor pd = new PropertyDescriptor("age", Person.class); System.out.println(pd.getPropertyType());
} }
 public class Person {// javabean

     private String name;
private String password;
private int age; public String getName() {
return name;
} public void setName(String name) {
this.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;
} public String getAb(){
return null;
} }