【问题标题】:lookup method from config java来自配置 java 的查找方法
【发布时间】:2019-02-06 17:04:47
【问题描述】:

根据配置值调用方法的更好方法是什么。

List<String> configs = "from config file"

for(string config : configs) {
    if (config.equal("method1")) {
        someObj.method1();
    } else if(config.equal("method21")) {
        someObj2.method21()
    }
}

【问题讨论】:

  • 哪个选项更好?
  • 我可以对此做出一个好的设计决策。我正在尝试根据存储在配置文件中的配置值调用单个方法。现在我只是在做 stmt 检查配置值是否与代码中的预定义值匹配。但我认为这是一个糟糕的设计,因为这可能非常不稳定,而且不是一个明确的方法来更改配置值而不首先查看代码并查看那里的值......
  • someObjsomeObj2 来自哪里?如何知道使用哪个实例?
  • @AndrewS someOjb# 是预定义的类。这就是我面临的设计挑战。基本上我的问题是在加载时或运行时根据用户配置映射和运行进程。

标签: java algorithm oop design-patterns


【解决方案1】:

你可以通过反射来调用它:

//in the loop
...
Class<?> c = Class.forName("Your class");
Method method = c.getDeclaredMethod(config, parameterTypes);
method.invoke(obj, params);

【讨论】:

  • 是的,我知道您可以使用反射调用方法。我的问题更多是设计正确的解决方案而不是实施。
猜你喜欢
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
相关资源
最近更新 更多