【发布时间】:2016-10-10 04:38:00
【问题描述】:
我正忙于一个从 xml 文件中提取数据并将其显示在 word 文档中的项目。我已经为此提取创建了一个方法,但我想通过使用一组方法来简化它。 这只是我目前如何测试某些信息的一个示例:
for (int i = 0; i < nodeMap.getLength(); i++) {
Node node = nodeMap.item(i);
if (node.getNodeName().equalsIgnoreCase("maximumRedeliveries")) {
if (node.getNodeValue().startsWith("{{")) {
retryLogic.setMaximumRedeliveries(extractPropertyName(node.getNodeValue(), propFileLocation));
} else {
retryLogic.setMaximumRedeliveries(node.getNodeValue());
}
}
if (node.getNodeName().equalsIgnoreCase("asyncDelayedRedelivery")) {
if (node.getNodeValue().startsWith("{{")) {
retryLogic.setAsyncDelayedRedelivery(extractPropertyName(node.getNodeValue(), propFileLocation));
} else {
retryLogic.setAsyncDelayedRedelivery(node.getNodeValue());
}
}
}
我的目标是为 if 语句值创建一个数组,例如“maximumRedeliveries”和“asyncDelayedRedelivery”,并为它们的相应方法创建一个数组,例如 setMaximumRedeliveries()、setAsyncDelayedRedelivery()。我不确定如何创建方法数组,或者是否有可能?
这个问题不同于Java - Creating an array of methods,因为我使用set方法,不知道如何以这种方式实现它。
【问题讨论】:
-
如果你使用的是java 8,你可以有String->SomeInterface的map,SomeInterface有
void accept(Node node);方法,然后用map.put("maximumRedeliveries", this::setMaximumRedeliveries);之类的东西填写,说,有很多XML 处理 API 可以以更可维护的方式完成(通过将数据直接放入从模式生成的 pojo 中,放入您的 pojo 中,允许您显式查询值而不是对它们做出反应等) -
@MatheM 我看了一下那个问题,但它不太适合我的情况。
-
@ArturBiesiadowski 不幸的是我使用的是 java 7,但肯定会看看 XML 处理 API,谢谢。