java - 如何避免 Java 中的大型 if-else 语句

标签 java xml mapping

我正在用 java 开发一个框架,它依赖于大量带有大量参数的 XML 文件。

从 XML 文件读取参数时,我必须有一个大的 if-else 语句来确定参数是什么,然后调用适当的方法。 这是正常的吗?有一个大的 if-else 语句?

我认为有一种更简单、更简洁的方法可以做到这一点,例如Java XML 映射还是 Java 反射?这是答案吗?如果是这样,您能否举例说明这是如何完成的,这样我就不必依赖大量的 if-else 语句?

谢谢!

最佳答案

你想先创建一个接口(interface):

public interface XMLParameterHandler {
  public handle_parameter (String XMLData);
}

接下来你要创建一个 map :

private Map<string, XMLParameterHandler> handlers;

...并使用相关的 Map 实现之一对其进行初始化:

this.handlers = new HashMap<>();

您需要在多个类上实现该接口(interface),每个类对应一个您打算处理的参数。这是内部类的一个很好的用途。将这些已实现的处理程序中的每一个插入到 map 中:

handlers.put ("Param1", new XMLParam1HandlerImpl());
handlers.put ("Param2", new XMLParam2HandlerImpl());

然后您可以从 xml 处理循环中调用处理程序:

handlers.get (paramValue).handle_parameter(XmlData);

关于java - 如何避免 Java 中的大型 if-else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5539040/

相关文章:

ruby - 如何在没有类型映射的情况下在ruby中解析yaml

java - 是否可以在 Hibernate 中通过 OneToOne 关系映射父类(super class)和子类?

java - 如何使用 Slick-Utils 从 Java 中的 spritesheet 加载纹理?

Java 等待线程完成

java - fragment 错误中的 Android getListView()

java - 解析哪个版本的 XML 模式用于具有版本属性的 XML 文档

php - 为什么我们需要带有 SOAP 的 WSDL?

c# - 在 C# 中从 URL 中删除 anchor

python - 用生成的图像替换 xml 标签(python 正则表达式)

nhibernate - 使用 NHibernate 映射分区数据的方法