学科分类
目录
Java Web

读取JavaBean的属性

通过前面小节的学习知道,Java的内省可以修改JavaBean的属性,使用PropertyDescriptor类的getWriteMethod()方法就可以获取属性对应的setter方法。在JavaBean中,属性的getter和setter方法是成对出现的,因此Java的内省也提供了读取JavaBean属性的方法,只要使用PropertyDescriptor类的getReadMethod()方法即可。

为了让读者更好地掌握通过内省如何读取JavaBean的属性,接下来通过一个案例来演示,如例1所示。

例1 IntrospectorDemo03.java

 1    package cn.itcast.chapter08.introspector;
 2    import java.beans.PropertyDescriptor;
 3    import java.lang.reflect.Method;
 4    import cn.itcast.chapter08.javabean.Person;
 5    public class IntrospectorDemo03 {
 6        public static void main(String[] args) throws Exception {
 7            //创建Person类的对象
 8            Person p = new Person();
 9            //通过直接调用setter方法的方式为属性赋值
 10            p.setName("李芳");
 11            p.setAge(18);
 12            //使用属性描述器获取Person类name属性的描述信息
 13            PropertyDescriptor pd = new PropertyDescriptor("name",p.getClass());
 14            //获取name属性对应的getter方法
 15            Method methodName = pd.getReadMethod();
 16            //调用getter方法,并获取name属性值
 17            Object o = methodName.invoke(p);
 18            System.out.println("姓名:"+o);
 19            //使用属性描述器获取Person类age属性的描述信息
 20            pd = new PropertyDescriptor("age",p.getClass());
 21            //获取name属性对应的setter方法
 22            Method methodAge = pd.getReadMethod();
 23            //调用getter方法,并获取age属性值
 24            o = methodAge.invoke(p);
 25            System.out.println("年龄:"+o);
 26        }
 27    }

运行结果如图1所示。

图1 运行结果

在例1中,首先创建Person类的实例,再通过实例调用setter方法直接为属性赋值,然后通过内省读取设置后的属性值。第17行代码用于获取Person类中的name属性的描述信息,第22行代码通过调用getReadMethod()方法获取name属性的getter方法,第24行代码调用getter方法,并获取name属性值。

点击此处
隐藏目录