1:简单说明

正如其名称,用于描述属性相关的信息,如对于读写方法的设置和读取,获取属性的类型等操作。

2:源码

2.1:public构造方法

public PropertyDescriptor(String propertyName, // 属性的名称Class<?> beanClass // bean的class类型)
public PropertyDescriptor(String propertyName, // 属性名称Class<?> beanClass, // bean的class类型 String readMethodName, // 读方法名称String writeMethodName // 写方法名称)
public PropertyDescriptor(String propertyName, // 属性名称Method readMethod, // 读方法Method writeMethod // 写方法)

2.2:主要方法

// 获取属性的类型
public synchronized Class<?> getPropertyType() {}
// 获取读方法
public synchronized Method getReadMethod() {}
// 设置读方法
public synchronized void setReadMethod(Method readMethod) {}
// 获取读方法
public synchronized Method getWriteMethod() {}
// 设置读方法
public synchronized void setWriteMethod(Method writeMethod){}
// 设置属性可以使用的属性编辑器类型
public void setPropertyEditorClass(Class<?> propertyEditorClass) {}
// 获取当前设置的属性编辑器类型
public Class<?> getPropertyEditorClass() {}
// 创建bean对象对当前属性的属性编辑器
public PropertyEditor createPropertyEditor(Object bean) {}

3:例子

3.1:自定义属性编辑器

/*** 自定义的属性编辑器,转换数据类型*/
public class MyAgePropertyEditor extends PropertyEditorSupport {private String sourceText;/*** 设置源数据值* @param text* @throws IllegalArgumentException*/@Overridepublic void setAsText(String text) throws IllegalArgumentException {this.sourceText = text;}/*** 转换为满足age属性要求的int类型* @return*/@Overridepublic Object getValue() {return Integer.valueOf(sourceText);}
}

3.2:定义bean

public class BeanForPropertyDescriptor {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

3.3:测试代码

public class MainForPropertyDescriptor {public static void main(String[] args) throws Exception {Class<BeanForPropertyDescriptor> beanForPropertyDescriptorClass= BeanForPropertyDescriptor.class;PropertyDescriptor agePropDescriptor= new PropertyDescriptor("age", beanForPropertyDescriptorClass);Method readMethod = agePropDescriptor.getReadMethod();System.out.println("读方法是:");System.out.println(readMethod);Method writeMethod = agePropDescriptor.getWriteMethod();System.out.println("写方法是:");System.out.println(writeMethod);// 设置属性编辑器,用来修改属性agePropDescriptor.setPropertyEditorClass(MyAgePropertyEditor.class);BeanForPropertyDescriptor beanForPropertyDescriptor = new BeanForPropertyDescriptor();PropertyEditor agePropertyEditor = agePropDescriptor.createPropertyEditor(beanForPropertyDescriptor);agePropertyEditor.setAsText("90");Object value = agePropertyEditor.getValue();System.out.println(value.getClass());}
}

运行:

读方法是:
public int yudaosourcecode.propertydescriptortest.BeanForPropertyDescriptor.getAge()
写方法是:
public void yudaosourcecode.propertydescriptortest.BeanForPropertyDescriptor.setAge(int)
class java.lang.IntegerProcess finished with exit code 0

java PropertyDescriptor分析相关推荐

  1. java dump分析工具_java性能分析与常用工具

    本次源码已放在Github:https://github.com/nateshao/jvm-tuning 个人博客 https://nateshao.gitee.io http://www.nates ...

  2. 【Java 虚拟机原理】垃圾回收算法( Java VisualVM 工具 | 安装 Visual GC 插件 | 使用 Java VisualVM 分析 GC 内存 )

    文章目录 一.Java VisualVM 工具安装 Visual GC 插件 二.使用 Java VisualVM 分析 GC 内存 一.Java VisualVM 工具安装 Visual GC 插件 ...

  3. linux java性能监控工具_性能监控工具以及java堆分析OOM

    一.性能监控工具 1.系统性能监控 Linux -确定系统运行的整体状态,基本定位问题所在 -uptime: ------系统时间 ------运行时间(例子中为127天) ------连接数(每个终 ...

  4. java异常——分析堆栈跟踪元素+使用异常机制的技巧

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java异常--分析堆栈跟踪元素+使用异常机制的技巧 的相关知识: [1]分析堆栈跟踪元素相关 ...

  5. 开源java性能分析工具_Java性能监控:您应该知道的5个开源工具

    开源java性能分析工具 鲜为人知但有用:开源应用程序性能监视的状态 对于任何应用程序来说,最重要的事情之一就是性能. 我们要确保用户获得他们能获得的最佳体验,并想知道我们的应用已启动并正在运行. 这 ...

  6. java编译器分析_Java反编译器的剖析

    java编译器分析 简单地说,反编译器尝试将源代码转换为目标代码. 但是有很多有趣的复杂性-Java源代码是结构化的: 字节码当然不是. 而且,转换不是一对一的:两个不同的Java程序可能会产生相同的 ...

  7. java超出gc开销限制_超出了GC开销限制– Java堆分析

    java超出gc开销限制 这篇文章是我们原来的GC开销超出问题模式的延续. 正确的Java堆分析对于消除O​​utOfMemoryError:GC开销问题至关重要. 如果您不熟悉此Java HotSp ...

  8. 超出了GC开销限制– Java堆分析

    这篇文章是我们原来的GC超出限制的问题模式帖子的延续. 正确的Java堆分析对于消除O​​utOfMemoryError:GC开销问题至关重要. 如果您不熟悉此Java HotSpot 1.6错误,建 ...

  9. native层 安卓_安卓逆向——拼xx协议java层分析

    制丨阿星 整理丨阿星 老铁们大家好,今天小编给大家带来很实用的技巧叫拼xx协议java层分析,有啥不足的地方望大家指点指点! 首先抓包  反编译 这个时间段我们方法剖析一下 找到onclick 看他的 ...

最新文章

  1. 迁移学习与图神经网络“合力”模型:用DoT-GNN克服组重识别难题
  2. AD域中删除OU,提示没权限。 解决办法。
  3. 【django】配置前端静态文件【6】
  4. hana::detail::variadic::foldr1用法的测试程序
  5. 最近找工作的面试经历
  6. mysql启动错误排查-无法申请足够内存
  7. [react] 在React中组件的state和setState有什么区别?
  8. Node.js笔记-node.js连接MySQL与增删改查
  9. plsql developer如何创建新用户(users)
  10. 不规则多边形填充_花一分钟看一个案例,PPT中图片填充形状的应用
  11. 为什么使用3msip2协议_知识卡片 | 链路状态路由协议OSPF凭什么会取代RIP?
  12. Orchard 之:Widget,兼看 Layer 在权限控制中的作用
  13. PRD产品需求文档原型模版 Axure RP格式
  14. 什么是DC-DC转换器?DC-DC转换器是如何命名的?
  15. 【ICCV2019论文阅读】PU-GAN:点云上采样对抗网络
  16. 6410启动问题排除
  17. 计算机类毕业设计评语导师评语,毕业设计指导老师评语
  18. Codeforces - 1152B - Neko Performs Cat Furrier Transform
  19. 2018至2021年新春挡电影票房分析
  20. Jackson之多态反序列化

热门文章

  1. android pdf 文件加密,加密PDF与PdfBox-Android不兼容
  2. C#winform实现学生人员信息管理系统,可视化查看人员信息,一键修改、删除等,唯美登陆界面
  3. 【区块链108将】万链资本郝泽萱:我们要做区块链领域的红杉和高盛
  4. cmseasy漏洞复现
  5. android源码学习- APP启动流程(android12源码)
  6. 创建百度个人百科的方法与步骤
  7. Linux系统 05 python环境配置02 之 virtualenv与virtualenvwrappe以及freeze
  8. 智能指针之unique_ptr
  9. 老陈说事儿:如何才能不当IT的舔狗?理性认识行业、做正确的事儿。
  10. SDNU1025马踏飞燕