Java 基础(十六)利用反射给空值字段赋默认空字符串(某些生成excel情况下使用)

利用反射给空值字段赋默认空字符串

  private static Object replaceNull2EmptyChar(Object n) {
        Class<?> clazz = n.getClass();
        // 获取所有属性,包括私有的
        Field[] fields = clazz.getDeclaredFields();
        try {
            for (Field field : fields) {
             // 拼接成指定的set/get形式,比如setXxxx,getXxxx,方法的set/get后第一个字符大写
                String name = String.valueOf(field.getName().toCharArray()[0]).toUpperCase() + field.getName().substring(1);
                Method method = clazz.getDeclaredMethod("get" + name);
                Object obj = method.invoke(n);
                if (field.getType().getTypeName().equals(String.class.getTypeName()) && StringUtils.isBlank((String) obj)) {
                    // 获取set方法
                    Method declaredMethod = clazz.getDeclaredMethod("set" + name,String.class);
                    // 赋值
                   declaredMethod.invoke(n, StringUtils.EMPTY);
                }
            }
        } catch (Exception e) {
            log.error("对null值替换为空字符串失败", e);
        }
        return n;
    }

获取属性上的注解(easyexcel中的注解)

private List<List<String>> contactSituationhead(Class<?> clazz) {
        List<List<String>> list = Lists.newArrayList();
        List<String> data = Lists.newArrayList();
        // 获取属性上的注解
        Field[] declaredFields = clazz.getDeclaredFields();
        for (Field declaredField : declaredFields) {
            // ExcelProperty easyexcel中的特定注解
            ExcelProperty excelProperty = declaredField.getAnnotation(ExcelProperty.class);
            if (excelProperty.value().length > 0) {
                data.add(excelProperty.value()[0]);
            }else{
                data.add(StringUtils.EMPTY);
            }

        }
        list.add(data);
        return list;
    }

你可能感兴趣的:(#,Java基础,反射,java)