Package org.nutz.castor.castor

Source Code of org.nutz.castor.castor.String2Number

package org.nutz.castor.castor;

import org.nutz.castor.Castor;
import org.nutz.castor.FailToCastObjectException;
import org.nutz.lang.Mirror;
import org.nutz.lang.Strings;

/**
* 根据一个字符串将其转换成 Number 类型。这里有几个规则
* <ul>
* <li>如果 Number 为原生类型,空白串将被转换成 0
* <li>如果 Number 为外覆类,空白串将被转换成 null
* </ul>
*
* 如果转换失败,将抛出 FailToCastObjectException
*
* @author zozoh(zozohtnt@gmail.com)
*/
public class String2Number extends Castor<String, Number> {

  @Override
  public Number cast(String src, Class<?> toType, String... args) {
    if (Strings.isBlank(src)) {
      if (toType.isPrimitive())
        return 0;
      else
        return null;
    }
    try {
      return (Number) Mirror.me(toType)
                  .getWrapperClass()
                  .getConstructor(String.class)
                  .newInstance(src);
    }
    catch (Exception e) {
      throw new FailToCastObjectException(String.format"Fail to cast '%s' to <%s>",
                                src,
                                toType.getName()), e);
    }
  }
}
TOP

Related Classes of org.nutz.castor.castor.String2Number

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.