【发布时间】:2020-03-03 08:20:49
【问题描述】:
我有一个谓词用于过滤相同实体对象的列表:
Predicate<DWHDeal> companyFilter = i -> i.getCompany().equals(company);
我还必须在基于之前实体构建 DTOS 的 DTO 列表中应用相同的过滤器,在完全相同的字段上使用完全相同的条件:
Predicate<DWHDealDTO> companyFilterDTO = i -> i.getCompany().equals(company);
是否可以在不实例化两个不同谓词的情况下实现这一点?如果可能的话,我想通过只创建一个Predicate 来实现这一点。
【问题讨论】:
-
DWHDealDTO和DWHDeal是否相关? (就像扩展同一个类) -
getCompany()在两种情况下是否返回相同的类型? -
@ernest_k 不,不幸的是,它们没有扩展相同的类。但它们的字段大多相同。
-
那么定义一个通用接口呢? (即由两个类实现)
-
规则没有什么不同,例如使用普通类实现
Predicate或尝试编写一个同时接受DWHDeal和DWHDealDTO作为参数的方法。如果这些类没有公共接口或声明公共方法的超类,则它们没有公共方法,只有两个不相关的方法恰好具有相同的名称。
标签: java lambda java-8 predicate