- 12
- 0
- 约 9页
- 2015-08-07 发布于湖北
- 举报
beanutils的中文API.doc
commons-beanutils学习报告
开源框架学习 2008-12-11 08:28:48 阅读191 评论1 ??字号:大中小?订阅
1.?? 概述
commons-beanutil开源库是apache组织的一个基础的开源库,为apache中许多类提供工具方法,学习它是学习其他开源库实现的基础。
Commons-beanutil中包含大量和JavaBean操作有关的工具方法,使用它可以轻松利用Java反射机制来完成代码中所需要的功能,而不需要详细研究反射的原理和使用,同时,该类库中提出了动态Bean的概念,不但提供现有JavaBean的所有功能,而且还可以在运行时动态的对Bean中的属性数据类型进行修改以及增删属性。
本文研究的是v1.7版本的commons-utils类库。
?
2.?? 转换器
2.1. 概述
转换器用来将输入数据转换成需要的数据类型,同时提供统一的接口,方便客户代码使用和扩展。
Commons-beanutils包中,所有转换器都从mons.beanutils.Converter接口集成,添加自己需要的实现。
转换器分为以下三个部分:
????????? 数组转换器
????????? 普通转换器
????????? 地区敏感的转换器
????????? 转换器工具类
Converter子类包含的都是转换器的实现,一般情况下,不需要直接实例化这些类,只需要使用ConvertUtil中convert方法,就可以进行数据类型的转换。高级用户不但可以使用默认的转换方式,还可以向ConvertUtils中注册新的或替代原有的转换器,实现需要的业务逻辑。
?
2.2.??? 转换器接口
转换器接口的详细信息如下:
?
类名 描述 Converter BeanUtil框架中使用的类型转换接口,可以将输入数据转换成需要的类型 ?
2.3. 数组转换器
2.3.1.??? 概述
数组转换器的实现被封装在mons.beanutils.converters包中。它的功能是将一定格式的输入字符串转换成不同类型的数组,输入数据以逗号分隔,开头和结尾可以用大括号括起来,例如:“{1, 2, 3, 4, 5}”。
所有数组转换器实现都从一个名为AbstractArrayConverter的抽象基类中集成,这个类提供了解析输入字符串的工具方法。
2.3.2.??? 类说明
数组转换器的详细类说明如下:
?
类名 描述 AbstractArrayConverter 用来将输入字符串转换成数组的抽象类,提供了所有ArrayConverter需要的公共方法。 BooleanArrayConverter 将输入的任何对象转换成boolean数组,传入对象要满足以下几个条件后才能正确转换:
1.???? 传入对象为boolean数组,直接返回。
2.???? 传入对象为String数组,只要数组中的每个元素满足特定条件,就可以正常解析为boolean数组。
3.???? 传入对象为其他类型,只要对象的toString()方法返回的字符串为逗号分隔的格式,并且每部分满足特定条件,就可以解析为boolean数组。
可以向boolean类型转换的字符串如下:
????????? yes,y,true,on,1被转换为true
????????? no,n,false,off,0被转换成false
????????? 其他字符串为非法字符串,如果遇到就停止转换,抛出异常或返回默认值。
原有代码实现的缺陷和改进方案:
1.???? 字符串数组解析算法重复:可以通过提取公共函数的方法消除重复。
2.???? try/catch嵌套混乱:解决方法同上,只要提取公共方法后自然就可以解决这个问题。
3.???? 特殊字符串被硬编码,例如yes,y,no,n等:将这些特殊字串提取成常量,放入映射表中维护,减少复杂的判断语句。 ByteArrayConverter 将传入对象转换为byte数组,如果转换失败,就抛出异常。
仍然有重复代码的问题。 CharacterArrayConverter 将对象转换为char数组 DoubleArrayConverter 将对象转换成double数组 FloatArrayConverter 将对象转换成float数组 IntegerArrayConverter 将对象转换成int数组 LongArrayConverter 将对象转换成long数组 ShortArrayConverter 将对象转换成short数组 StringArrayConverter javadoc中说是将String数组转换成String数组,但不知道这样有什么意义。
查看代码后发现算法只能转换int型的数组为String
您可能关注的文档
- Android电子市场登陆下载问题解决教程.doc
- android电容屏.doc
- android画面跳转及传值实例代码.doc
- Android移动操作系统源代码.doc
- Android程序调试详解.doc
- Android笔记:组件生命周期.doc
- Android访问权限列表大全.doc
- Android访问权限声明.doc
- ANRITSUOMETSOTDR.doc
- ANSYSWORKBENCH与LS-DYNA的联合仿真.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测生物试卷+答案.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测语文试卷+答案.doc
- 四川省绵阳南山中学实验学校2025-2026学年高三上学期1月月考数学含答案.doc
- 2026届辽宁省大连市高三上学期双基考试物理试卷+答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测化学含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测生物含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测英语含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测政治含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试化学含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试生物含答案.doc
原创力文档

文档评论(0)