我有一个对象转换类,可以从我的域级别对象转换为DTO。
我实际上有以下结构
class RuleGroupDTO {
List<RuleDTO> ruleDTOs;
// other members
EvaluationRuleDTO
和AssignmentRuleDTO
都来自RuleDTO
我的转换API如下:
public RuleGroupDTO convert(RuleGroup ruleGroup);
因此,当我将我的域RuleGroup
传递给convert类时,它会查看与RuleGroup
关联的代码,然后构建封装在其中的EvaluationRuleDTO
或AssignmentRuleDTOs
RuleGroupDTO
。
当我检索到我的RuleGroupDTO时,我知道它将包含List<RuleDTO>
或List<EvaluationRuleDTO>
的{{1}}。
但是,要获得正确的类版本,我需要遍历List<AssignmentRuleDTO>
并转换为List<RuleDTO>
或List<EvaluationRuleDTO>
这看起来很混乱,我想我可以利用一些通用概念来避免执行这个循环+强制转换。
在这里更改我的API或对象结构以利用泛型的可能方法是什么?
答案 0 :(得分:0)
如果您有一定数量的类型并且希望它们分开,那么返回一个pojo,其中各种类型分为不同的集合,例如:
public class DTOResult {
public List<EvaluationRuleDTO> evalDTOs;
public List<AssignmentRuleDTO> assignDTOs;
}
答案 1 :(得分:0)
使用List<RuleDTO>
来避免施放,为了上帝的缘故,不要写一个循环。使RuleDTO实现一个访问者模式,允许任何使用者以类型安全的方式处理任何一种子类。
变种类型的Java sucks。