0

我有一个对象转换类,可以将我的域级别对象转换为 DTO。

我实际上具有以下结构

class RuleGroupDTO {
List<RuleDTO> ruleDTOs;
// other members

EvaluationRuleDTO并且AssignmentRuleDTO都从 RuleDTO 扩展

我的转换 API 如下:

public RuleGroupDTO convert(RuleGroup ruleGroup);

因此,当我将域传递RuleGroup给转换类时,它会查看与 关联的代码RuleGroup,然后构造EvaluationRuleDTOAssignmentRuleDTOs封装在RuleGroupDTO.

当我取回我的 RuleGroupDTO 时,我知道它将包含一个List<RuleDTO>要么是List<EvaluationRuleDTO>要么List<AssignmentRuleDTO>

但是,要获得正确的类版本,我需要遍历List<RuleDTO>并强制转换为List<EvaluationRuleDTO>List<AssignmentRuleDTO>

这看起来很乱,我想我可以利用一些通用概念来避免执行这个循环+强制转换。

在这里更改我的 API 或对象结构以利用泛型的可能方法是什么?

4

2 回答 2

0

用来避免强制转换,看在List<RuleDTO>上帝的份上,不要写循环。让 RuleDTO 实现访问者模式,允许任何消费者以类型安全的方式处理任何一种子类。

Java很讨厌变体类型。

于 2012-07-20T15:39:34.520 回答
0

如果您有一定数量的类型并且希望将它们分开,则返回一个 pojo,其中将各种类型分成不同的集合,例如:

public class DTOResult {
  public List<EvaluationRuleDTO> evalDTOs;
  public List<AssignmentRuleDTO> assignDTOs;
}
于 2012-07-20T14:58:44.110 回答