gpt4 book ai didi

java - Java中根据条件访问字段

转载 作者:行者123 更新时间:2023-11-30 05:25:53 25 4
gpt4 key购买 nike

我必须编写一个实用方法,可以从对象中获取特定的变量值, 评估一些条件。

以下是要求。

  1. 如果“name”作为类型调用“getName”来获取值。
  2. 如果“subtype”作为类型出现,请调用“getSubType”以获取子类型值。

当前解决方案:

       public Object getFieldValue(String type, IDTO dto){
Method method = dto.getClass().getMethod("get"+createMethodName(type));
Object returnedObject = method.invoke(dto, null);
return returnedObject;
}

但是,操作相当繁重,并且会带来性能问题。有没有可以选择的替代方案或更好的方法来做到这一点。

其他要点:

  1. 接口(interface) IDTO 仅声明了所有 getter setter。其中没有声明任何字段。

最佳答案

如果您需要性能,我建议对实用程序方法使用代码生成来执行对 IDTO 对象的所需访问。通常这会集成到构建中。您生成的方法可以对每个“类型”使用性能良好的 switch 语句,例如:

  /**
* Utility for generic access to IDTO object properties.
* GENERATED code, do not change! See template ....
*/
public Object getFieldValue(String type, IDTO dto){
switch (type) {
case "name" : return dto.getName();
case "subtype" : return dto.getSubtype();
...
}
// ERROR handling
throw new RuntimeException("unknown property");
}

要实现生成器代码,您可以使用反射,就像上面的代码一样。为了更广泛地使用该方法,我建议引入一个简单的模板引擎,例如 https://freemarker.apache.org

关于java - Java中根据条件访问字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58639762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com