java 根据Class<> 把string转成原来的类型

把csv转成对象,获取的字段全部为string类型的,

private Object convertClass(Field field , Object val) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        Class typeCla = field.getType();
        String v = (String) val;
        
        if (!typeCla.isPrimitive()) { // 判断基本类型
            if(typeCla.equals(String.class)){ // 如果是string则直接返回
                return v ;
            }
             //  如果不为null 则通过反射实例一个对象返回
            return "".equals(v)?null:typeCla.getConstructor(String.class).newInstance(v);
        }

        // 下面处理基本类型,返回包装类
        String name = typeCla.getName();
        switch (name){
            case "String": return v;
            case "int": return Integer.parseInt(v);
            case "byte": return Byte.parseByte(v);
            case "boolean": return Boolean.parseBoolean(v);
            case "double": return Double.parseDouble(v);
            case "float": return Float.parseFloat(v);
            case "long": return Long.parseLong(v);
            case "short": return Short.parseShort(v);
            default: return v;
        }
    }

你可能感兴趣的:(java 根据Class<> 把string转成原来的类型)