ConvertUtils ,这个工具类的职能是在字符串和指定类型的实例之间进行转换。
目前支持的类型有:
- java.lang.BigDecimal
- java.lang.BigInteger
- boolean and java.lang.Boolean
- byte and java.lang.Byte
- char and java.lang.Character
- java.lang.Class
- double and java.lang.Double
- float and java.lang.Float
- int and java.lang.Integer
- long and java.lang.Long
- short and java.lang.Short
- java.lang.String
- java.io.File
- java.net.URL
- java.sql.Date
- java.sql.Time
- java.sql.Timestamp
总体提供两类功能:
1. 将字符串转换为指定类型;
2. 注册、注销和查询类型转换器;
convert (java.lang.Object value)
将任意的实例转变为 String ,用法非常简单。在尝试的过程中,感觉与调用实例上的 toString() 方法的效果一样,不知道是不是在这个方法内仅仅是调用了传入实例的 toString() 方法。
ps: 需要读源代码才能清楚。
convert(java.lang.String value, java.lang.Class clazz)
将字符串 value 转换为 clazz 的一个实例;如果失败的话,就以 String 的形式返回 value 。
convert(java.lang.String[] values, java.lang.Class clazz)
这个方法是对前一方法的加强版,将数组中的每个 value 都进行转换,最后以 Object 返回。(数组也是 Object 啊)
deregister () 和 deregister (java.lang.Class clazz )
注销转换器,前者将所有的转换器注销掉,后者只注销对应于 clazz 的转换器。注销在这里不是彻底删除了,而是将转换器变为默认的转换器( apache commons 提供的)。
lookup (java.lang.Class clazz)
获取指定类型 clazz 的转换器.
register (Converter converter, java.lang.Class clazz)
为指定类型 clazz 注册转换器 converter 。如果 clazz 已经存在一个对应的转换器,那么 converter ,将覆盖原来的转换器。也就是说,我们可以为 String,Double 创建自定义的类型转换器,并在注册后进行使用。
ps:apache 的类定义明确,描述非常清楚,所以就不贴出例子了。当然这只是到达可以正常使用的阶段,如果要进行改造或者创建自己的 ConvertUtils ,那可能需要更多的时间,因为还要去参考 ConvertUtilsBean ,这里就不详述了。