Java 之 PropertyDescriptor[通俗易懂]

Java 之 PropertyDescriptor[通俗易懂]PropertyDescriptor描述了一个JavaBean属性的一对访问方法即getter和setter。常用的构造方法是PropertyDescriptor(Stringproperty

大家好,又见面了,我是你们的朋友全栈君。

   PropertyDescriptor 描述了一个JavaBean 属性的一对访问方法即 getter和setter。

常用的构造方法是PropertyDescriptor(String propertyName,Class<?> beanClass);

propertyName就是属性的名称,beanClass就是这个属性对应属于哪个对象的Class.

/**
 *
 * @author zhangwei_david
 * @version $Id: PropertyDescriptorDemo.java, v 0.1 2015年5月25日 下午8:17:59 zhangwei_david Exp $
 */
public class PropertyDescriptorDemo {

    /**
     *
     * @param args
     * @throws IntrospectionException
     * @throws InvocationTargetException
     * @throws IllegalArgumentException
     * @throws IllegalAccessException
     */
    public static void main(String[] args) throws IntrospectionException, IllegalAccessException,
    IllegalArgumentException, InvocationTargetException {
        // bean的实例
        Form form = new PropertyDescriptorDemo().new Form();
        // 创建属性name 的PropertyDescriptor
        PropertyDescriptor pd = new PropertyDescriptor("name", form.getClass());
        // 获取属性的setter方法
        Method writer = pd.getWriteMethod();
        // 反射调用setter方法设置值
        writer.invoke(form, "TEST");
        // 输入setter以后的结果
        System.out.println(form.getName());
        // 获取getter方法
        Method reader = pd.getReadMethod();
        // 获取属性值
        String value = (String) reader.invoke(form);
        // 获取属性
        String name = pd.getName();

        System.out.println(name + "=" + value);

    }

    /**
     *
     *  测试表单
     *
     * @author zhangwei_david
     * @version $Id: PropertyDescriptorDemo.java, v 0.1 2015年5月25日 下午8:40:29 zhangwei_david Exp $
     */
    class Form {
        /**属性name**/
        private String name;

        /**
         * Getter method for property <tt>name</tt>.
         *
         * @return property value of name
         */
        public String getName() {
            return name;
        }

        /**
         * Setter method for property <tt>name</tt>.
         *
         * @param name value to be assigned to property name
         */
        public void setName(String name) {
            this.name = name;
        }

    }
}

 

输出的结果是:

TEST
name=TEST

可以发现,正确调用了setter和getter方法,如果将Form中的getter方法删除后运行的结果是什么呢?

Exception in thread "main" java.beans.IntrospectionException: Method not found: setName
	at java.beans.PropertyDescriptor.<init>(PropertyDescriptor.java:110)
	at java.beans.PropertyDescriptor.<init>(PropertyDescriptor.java:70)
	at com.cathy.demo.reflect.PropertyDescriptorDemo.main(PropertyDescriptorDemo.java:32)

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155519.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 计算机cmd入门,教大家5个装逼用的CMD命令,让人一看你就是个电脑高手

    计算机cmd入门,教大家5个装逼用的CMD命令,让人一看你就是个电脑高手很多电脑小白使用电脑时,只会用鼠标点来点去的,教大家5个装逼用的CMD命令,让人一看你就是个电脑高手,专门震慑小姐姐、小学生。首先我们需要打开CMD命令提示符,这个操作大家都知道,按下键盘上的Windows+R键,然后输入“CMD”,按下回车键。一、改变命令提示符配色我们可以先输入“Color”—“空格”—“help”,来获取颜色的帮助。从这里可以看到,各种颜色的代码:0~7、A~F。如果想…

  • 如何更好的使用谷歌搜索引擎加速器_国外搜索引擎

    如何更好的使用谷歌搜索引擎加速器_国外搜索引擎搜索引擎命令大全!1、双引号把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配。bd和Google都支持这个指令。例如搜索:“seo方法图片”2、减号减号代表搜索不包含减号后面的词的页面。使用这个指令时减号前面必须是空格,减号后面没有空格,紧跟着需要排除的词。Google和bd都支持这个指令。例如:搜索-引擎返回的则是包含“搜索”这个词,却不包含“引擎”这个词的结果3、星号星号*是常用的通配符,也可以用在搜索中。百

  • Linux中密码登录redis客户端

    Linux中密码登录redis客户端#redis一、查找redis服务ps-ef|grepredis5061282712771015:29pts/000:00:00grepredisroot2395310Mar03?13:43:16/data/database/meijiesit_6379_redis/bin/redis-server0.0.0.0:63792.cd到redis的bin目录./redis-cli启动客户端查找key发现需要

  • SQL中的连接查询与嵌套查询「建议收藏」

    SQL中的连接查询与嵌套查询「建议收藏」连接查询若一个查询同时涉及两个或两个以上的表,则称之为连接查询。连接查询是数据库中最最要的查询,包括:1、等值连接查询2、自然连接查询3、非等值连接查询4、自身连接查询5、外连接查询6、复合条件查询等值与非等值连接查询:比较运算符主要有=、>、=、)等。下面来看一个例子:假设有一个学生数据库,其中有三张表,即学生信息表(Student

  • MYSQL ERROR CODE 错误编号的意义

    mysql error code(备忘)转1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库文件失败1012:不能读取系统表中的记录1020:记录已

  • 列举出linux文件和目录常用的命令_linux复制文件到另一个目录

    列举出linux文件和目录常用的命令_linux复制文件到另一个目录目录命令总览ls(英文全拼:listfiles):列出目录及文件名cd(英文全拼:changedirectory):切换目录pwd(英文全拼:printworkdirectory):显

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号