将Object转成指定的类型

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:28   2195   0

    /**
     * Object转成指定的类型
     * @param obj
     * @param type
     * @param <T>
     * @return
     */
    public static<T> T convert(Object obj, Class<T> type) {
        if (obj != null && StringUtils.isNotBlank(obj.toString())) {
            if (type.equals(Integer.class)||type.equals(int.class)) {
                return (T)Integer.valueOf(StringUtils.trim(obj.toString()));
            } else if (type.equals(Long.class)||type.equals(long.class)) {
                return (T)Long.valueOf(StringUtils.trim(obj.toString()));
            } else if (type.equals(Boolean.class)||type.equals(boolean.class)) {
                return (T)Boolean.valueOf(StringUtils.trim(obj.toString()));
            } else if (type.equals(Short.class)||type.equals(short.class)) {
                return (T)Short.valueOf(StringUtils.trim(obj.toString()));
            } else if (type.equals(Float.class)||type.equals(float.class)) {
                return (T)Float.valueOf(StringUtils.trim(obj.toString()));
            } else if (type.equals(Double.class)||type.equals(double.class)) {
                return (T)Double.valueOf(StringUtils.trim(obj.toString()));
            } else if (type.equals(Byte.class)||type.equals(byte.class)) {
                return (T)Byte.valueOf(StringUtils.trim(obj.toString()));
            } else if (type.equals(Character.class)||type.equals(char.class)) {
                return (T)Character.valueOf(obj.toString().charAt(0));
            } else if (type.equals(String.class)) {
                return (T) obj;
            } else if (type.equals(BigDecimal.class)) {
                return (T) new BigDecimal(StringUtils.trim(obj.toString()));
            } else if (type.equals(LocalDateTime.class)) {
                return (T) LocalDateTime.parse(obj.toString());
            } else if (type.equals(Date.class)) {
                try {
                    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
                    return (T) formatter.parse(obj.toString());
                } catch (ParseException e) {
                    throw new RuntimeException(e.getMessage());
                }
            }else{
                return null;
            }
        } else {
            if (type.equals(int.class)) {
                return (T)Integer.valueOf(0);
            } else if (type.equals(long.class)) {
                return (T)Long.valueOf(0L);
            } else if (type.equals(boolean.class)) {
                return (T)Boolean.valueOf(false);
            } else if (type.equals(short.class)) {
                return (T) Short.valueOf("0");
            } else if (type.equals(float.class)) {
                return (T)Float.valueOf(0.0f);
            } else if (type.equals(double.class)) {
                return (T)Double.valueOf(0.0d);
            } else if (type.equals(byte.class)) {
                return (T)Byte.valueOf("0");
            } else if (type.equals(char.class)) {
                return (T)Character.valueOf('\u0026#39;);
            }else {
                return null;
            }
        }
    }

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP