commons-beanutils包ConvertUtils使用(二)

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来管理,他的使用的范围要更广一些,不光只有时间类型的,其它类型的均可。

你可能感兴趣的:(java,apache,sql,.net)