使用泛型来避免循环和转换

时间:2012-07-20 14:52:55

标签: java generics

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

我实际上有以下结构

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

EvaluationRuleDTOAssignmentRuleDTO都来自RuleDTO

我的转换API如下:

public RuleGroupDTO convert(RuleGroup ruleGroup);

因此,当我将我的域RuleGroup传递给convert类时,它会查看与RuleGroup关联的代码,然后构建封装在其中的EvaluationRuleDTOAssignmentRuleDTOs RuleGroupDTO

当我检索到我的RuleGroupDTO时,我知道它将包含List<RuleDTO>List<EvaluationRuleDTO>的{​​{1}}。

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

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

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

2 个答案:

答案 0 :(得分:0)

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

public class DTOResult {
  public List<EvaluationRuleDTO> evalDTOs;
  public List<AssignmentRuleDTO> assignDTOs;
}

答案 1 :(得分:0)

使用List<RuleDTO>来避免施放,为了上帝的缘故,不要写一个循环。使RuleDTO实现一个访问者模式,允许任何使用者以类型安全的方式处理任何一种子类。

变种类型的Java sucks