Java 遍历 class 的域

@Data

static class RunnerO{

    //任务启动时刻

    private String startTime;

    //任务结束时刻

    private String endTime;

    //任务总计耗时

    private String totalCosts;

    //任务平均流量

    private String byteSpeedPerSecond;

    //记录写入速度

    private String recordSpeedPerSecond;

    //读出记录总数

    private String countSuccess;

    //读写失败总数

    private String countFail;

  

    private long totalBytes;

  

    //文件名

    private String fileName;

}
//        遍历RunnerO类,找到所有get方法,由类中域名和值生成Json的ArrayList

        List<Map<String,String>> resultList = new ArrayList<>();

        Field[] declaredFields = RunnerO.class.getDeclaredFields();

        for (int i=0; i<declaredFields.length; i++){

            Field field = declaredFields[i];

            String fieldName = field.getName();

            String methodName = "";

            for (Method method : RunnerO.class.getMethods()){

                if (method.getName().contains(fieldName.substring(1))  && method.getName().contains("get") ){

                    methodName = method.getName();

                    break;

                }

            }

            Method method = null;

            try {

                method = RunnerO.class.getMethod(methodName);

                String value = String.valueOf(method.invoke(ro));

                Map<String,String> map = new HashMap<>();

                map.put("var_name",fieldName);

                map.put("sql_def",value);

                resultList.add(map);

            } catch (NoSuchMethodException e) {

                e.printStackTrace();

            } catch (IllegalAccessException e) {

                e.printStackTrace();

            } catch (InvocationTargetException e) {

                e.printStackTrace();

            }

        }

        return JSON.toJSONString(resultList);

  
    展开阅读全文