为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

幕布斯7119047 2019-02-17 04:57:20
// 表格内容 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 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

@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"}
查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 378 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信