想把这段用反射创建的类简化,怎么处理?

// 表格内容

            Class<?> tableDataClass = null;
            Object tableData = null;
            Object tableData02 = null;
            Object tableData03 = null;
            Object tableData04 = null;
            Object tableData05 = null;
            Object tableData06 = null;
            Object tableData07 = null;
            Object tableData08 = null;

            try {
                tableDataClass = Class.forName("com.mvc.bean.TableData");
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                tableData = tableDataClass.newInstance();
                tableData02 = tableDataClass.newInstance();
                tableData03 = tableDataClass.newInstance();
                tableData04 = tableDataClass.newInstance();
                tableData05 = tableDataClass.newInstance();
                tableData06 = tableDataClass.newInstance();
                tableData07 = tableDataClass.newInstance();
                tableData08 = tableDataClass.newInstance();

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                Method method = tableData.getClass().getMethod("setIndex", int.class);
                Method method1 = tableData.getClass().getMethod("setType", String.class);
                Method method2 = tableData.getClass().getMethod("setLevel", String.class);
                Method method3 = tableData.getClass().getMethod("setMessage", String.class);

                method.invoke(tableData, 1900101);
                method1.invoke(tableData, "任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5");
                method2.invoke(tableData, "告警");
                method3.invoke(tableData, "樵坪山到云篆山");

                method.invoke(tableData02, 1);
                method1.invoke(tableData02, "任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5");
                method2.invoke(tableData02, "告警");
                method3.invoke(tableData02, "樵坪山到云篆山樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通");

                method.invoke(tableData03, 2);
                method1.invoke(tableData03, "任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5");
                method2.invoke(tableData03, "告警");
                method3.invoke(tableData03, "樵坪山到云篆山");

                method.invoke(tableData04, 3);
                method1.invoke(tableData04, "任务5任务5任务5");
                method2.invoke(tableData04, "告警");
                method3.invoke(tableData04, "樵坪山到云篆山樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通");

                method.invoke(tableData05, 4);
                method1.invoke(tableData05, "任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5");
                method2.invoke(tableData05, "告警");
                method3.invoke(tableData05, "樵坪山到云篆山樵");

                method.invoke(tableData06, 5);
                method1.invoke(tableData06, "任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5");
                method2.invoke(tableData06, "告警");
                method3.invoke(tableData06, "樵坪山到云篆山樵坪山");

                method.invoke(tableData07, 6);
                method1.invoke(tableData07, "任务5任务5任务5");
                method2.invoke(tableData07, "告警");
                method3.invoke(tableData07, "樵坪山到云篆山樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通樵坪山到云篆山汇聚点网络链路不通");

                method.invoke(tableData08, 7);
                method1.invoke(tableData08, "任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5任务5");
                method2.invoke(tableData08, "告警");
                method3.invoke(tableData08, "汇聚点网络链路不通");

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
阅读 1.3k
1 个回答
@Test
public void test04() throws Exception {
    Class clazz = Class.forName("com.lmy.antelope.entity.TableData");
    Method setIndex = clazz.getMethod("setIndex", Integer.class);
    Method setType = clazz.getMethod("setType", String.class);
    Method setLevel = clazz.getMethod("setLevel", String.class);
    Method setMessage = clazz.getMethod("setMessage", String.class);

    List<Object[]> datas = getTableDatas();
    List<TableData> collect = datas.stream().map(data -> {
        try {
            TableData tableData = (TableData) clazz.newInstance();
            setIndex.invoke(tableData, data[0]);
            setType.invoke(tableData, data[1]);
            setLevel.invoke(tableData, data[2]);
            setMessage.invoke(tableData, data[3]);
            return tableData;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }).collect(Collectors.toList());

    collect.stream().map(JSON::toJSONString).forEach(System.out::println);
}

/**
 * 模拟造10条数据
 */
private List<Object[]> getTableDatas() {
    return IntStream.range(0, 10)
            .mapToObj(i -> new Object[]{i, "type" + i, "level" + i, "message" + i})
            .collect(Collectors.toList());
}

控制台输出:

{"index":0,"level":"level0","message":"message0","type":"type0"}
{"index":1,"level":"level1","message":"message1","type":"type1"}
{"index":2,"level":"level2","message":"message2","type":"type2"}
{"index":3,"level":"level3","message":"message3","type":"type3"}
{"index":4,"level":"level4","message":"message4","type":"type4"}
{"index":5,"level":"level5","message":"message5","type":"type5"}
{"index":6,"level":"level6","message":"message6","type":"type6"}
{"index":7,"level":"level7","message":"message7","type":"type7"}
{"index":8,"level":"level8","message":"message8","type":"type8"}
{"index":9,"level":"level9","message":"message9","type":"type9"}
推荐问题