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)

 

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【2022最新Java面试宝典】—— ElasticSearch面试题(31道含答案)

    【2022最新Java面试宝典】—— ElasticSearch面试题(31道含答案)目录1.elasticsearch了解多少,说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段。1.1设计阶段调优1.2写入调优1.3查询调优1.4其他调优2.elasticsearch的倒排索引是什么3.elasticsearch索引数据多了怎么办,如何调优,部署3.1动态索引层面3.2存储层面3.3部署层面4.elasticsearch是如何实现master选举的5.详细描述一下Elasticsearch索引文档的过程6.详细描述一下

    2025年11月4日
    5
  • android怎样换背景图片,手机怎么抠图换背景 安卓和iPhone一键抠图换背景教程

    android怎样换背景图片,手机怎么抠图换背景 安卓和iPhone一键抠图换背景教程原标题:手机怎么抠图换背景安卓和iPhone一键抠图换背景教程转自:电脑百事网果粉俱乐部原创平时很多小伙伴都喜欢拍照嗮图,而很多时候如果想要照片更美,抠图换背景会起到立竿见影的效果。那么,手机怎么抠图换背景?不少小伙伴苦于不懂PS抠图技术,总在羡慕别人。但其实很多人手机上分享的抠图照片都是通过一些APP就能够实现的,小白也可以轻松上手,下面“电脑百事网”干货来啦,教你如何借助APP,在安卓和i…

    2022年5月25日
    48
  • countdowntimer的用法_offset counta函数

    countdowntimer的用法_offset counta函数CountDownTimer类介绍CountDownTimer类比较简单,总共就一个构造和4个方法。内部是通过handler实现CountDownTimer(longtime,longinterval):参数time是总时间,interval是间隔时间start():开始倒计时的方法cancel():取消倒计时的方法onTink(longtime):抽象方法,每个间隔时间

    2026年1月17日
    4
  • MYSQL监控工具–mytop

    MYSQL监控工具–mytop

    2021年10月29日
    45
  • 【HashMap扩容机制】

    【HashMap扩容机制】我是廖志伟,一名Java开发工程师、幕后大佬社区创始人、Java领域优质创作者、CSDN博客专家。拥有多年一线研发经验,研究过各种常见框架及中间件的底层源码,对于大型分布式、微服务、三高架构(高性能、高并发、高可用)有过实践架构经验。博主:java_wxid社区:幕后大佬文章目录HashMap扩容机制本文的大概内容:HashMap扩容机制将(k1,v1)直接放入Node类型的数组中,这个数组初始化容量是16,默认的加载因子是0.75。HashMap有两个参数影响其性能:初始容量和加载.

    2022年6月26日
    27
  • matlab fir带通滤波,基于Matlab的FIR带通滤波器设计与实现

    matlab fir带通滤波,基于Matlab的FIR带通滤波器设计与实现mal”>3.2软件设计3.2.1数据组织方式若输入信号x(n)和滤波器的单位冲激响应h(n)在频域分别为,则其输出信号的频率响应为。根据离散傅氏变换的性质,可以得到滤波系统的差分方程:从上文Matlab的仿真过程可得到滤波器的级数N和滤波器系数h(n)。从上述可知数字滤波器实现时,主要是进行乘和加运算以及数据存取操作。在定点DSP上实现FIR滤波有两种方式:一种是用线性缓冲区实现z-1…

    2022年6月1日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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