commons-beanutils包ConvertUtils使用(二)

本文详细介绍了 org.apache.commons.beanutils.ConvertUtils 的使用方法,并通过实战演示了如何自定义 String 到 java.util.Date 类型的转换器。此外还对比了 ConvertUtils 与自定义工具类 DateUtils 的适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.org.apache.commons.beanutils.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

2.实战,我想实现一个可以将String类型转换为java.util.Date类型的转换器(这个不在上面包含的支持类型里),很简单我们只要实现Converter接口,实现Convert(Class type,Object value)方法。
public class DateConvert implements Converter{
private static SimpleDateFormat format ;

public DateConvert(String pattern){
format = new SimpleDateFormat(pattern);
}

@Override
public Object convert(Class type, Object value) {
if(value == null)
return null;
if(value instanceof String){
String tmp = (String) value;
if(tmp.trim().length() == 0)
return null;
else{
try {
return format.parse(tmp);
} catch (ParseException e) {
e.printStackTrace();
}
}
}else
throw new ConversionException("not String");
return value;
}

}

DateConvert date = new DateConvert("yyyy-MM-dd");
Object obj = ConvertUtils.convert("2009-11-11", java.util.Date.class);
System.out.println(obj);
Object obj3 = ConvertUtils.convert("2009-11-11", java.sql.Date.class);
System.out.println(obj3);
Object obj1 = ConvertUtils.convert("false", Boolean.class);
System.out.println(obj1);
Object obj2 = ConvertUtils.convert("12.34",Double.class);
System.out.println(obj2);
//注册时内部机制是以java.util.Date.class为健,Convert类为值存储
ConvertUtils.register(date, java.util.Date.class);
System.out.println(ConvertUtils.convert("2009-11-11", java.util.Date.class));

第一感觉好像这个东东的用法跟struts2中的convert类型转换有点相似,跟踪了源码发现后面的实现并没有用到这个包.

3.ConvertUtils VS DateUtils
假如DateUtils是你自己写关于Date的相关工具类,这个于common-beanutils包的ConvertUtils 你到底会选哪种方式使用呢?
我的看法是DateUtils之类的工具类从使用方面来看,里面方法全是些静态方法确实比ConvertUtils要方便,ConvertUtils类可以说是一个类型的管理类,上面的例子中也看的出来,你可能自定义许多实现了Convert接口的实现类,然后注册到ConvertUtils来管理,他的使用的范围要更广一些,不光只有时间类型的,其它类型的均可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值