为 return 组谓词创建方法
Create a method for return set of Predicates
我创建了 3 个谓词,用于此服务的一个方法中 class。这些是当前在一个方法中的 3 个谓词。但是在实施这个项目时,这些谓词似乎也可用于其他服务方法。
因此,有什么方法可以将它们放入一个单独的方法中,并在我们想要获取这些谓词时调用该方法吗? Predicate 的类型也需要改变。为此,我可以使用像 Predicate<T>
?
这样的泛型吗?
Predicate<LocalRequestDTO> allFilter = request -> (!StringUtils.isBlank(request.getSuvc())
&& !StringUtils.isBlank(request.getSuffix()) && !StringUtils.isBlank(request.getSite()));
Predicate<LocalRequestDTO> suvcSuffixFilter = request -> (!StringUtils.isBlank(request.getSuvc())
&& !StringUtils.isBlank(request.getSuffix()) && StringUtils.isBlank(request.getSite()));
Predicate<LocalRequestDTO> suvcFilter = request -> (!StringUtils.isBlank(request.getSuvc())
&& StringUtils.isBlank(request.getSuffix()) && StringUtils.isBlank(request.getSite()));
一个选项是创建一个 returns a Predicate
:
的方法
private static Predicate<LocalRequestDTO> allFilter() {
return request -> (!StringUtils.isBlank(request.getSuvc()) &&
!StringUtils.isBlank(request.getSuffix()) &&
!StringUtils.isBlank(request.getSite()));
}
List<LocalRequestDTO> allDto = dtos.stream()
.filter(allFilter())
.collect(Collectors.toList());
另一种选择是将 Predicate
定义为常量:
private static final Predicate<LocalRequestDTO> SUVC_FILTER = request ->
(!StringUtils.isBlank(request.getSuvc()) &&
StringUtils.isBlank(request.getSuffix()) &&
StringUtils.isBlank(request.getSite()));
List<LocalRequestDTO> suvcDto = dtos.stream()
.filter(SUVC_FILTER)
.collect(Collectors.toList());
或者您可以创建一个接受 DTO 和 returns 布尔值的方法,完全不使用谓词 @Lino:
private static boolean doSuvcFilter(LocalRequestDTO request) {
return !StringUtils.isBlank(request.getSuvc()) &&
StringUtils.isBlank(request.getSuffix()) &&
StringUtils.isBlank(request.getSite());
}
List<LocalRequestDTO> suvcDto = dtos.stream()
.filter(ClassNameContainingMethod::doSuvcFilter)
.collect(Collectors.toList());
我创建了 3 个谓词,用于此服务的一个方法中 class。这些是当前在一个方法中的 3 个谓词。但是在实施这个项目时,这些谓词似乎也可用于其他服务方法。
因此,有什么方法可以将它们放入一个单独的方法中,并在我们想要获取这些谓词时调用该方法吗? Predicate 的类型也需要改变。为此,我可以使用像 Predicate<T>
?
Predicate<LocalRequestDTO> allFilter = request -> (!StringUtils.isBlank(request.getSuvc())
&& !StringUtils.isBlank(request.getSuffix()) && !StringUtils.isBlank(request.getSite()));
Predicate<LocalRequestDTO> suvcSuffixFilter = request -> (!StringUtils.isBlank(request.getSuvc())
&& !StringUtils.isBlank(request.getSuffix()) && StringUtils.isBlank(request.getSite()));
Predicate<LocalRequestDTO> suvcFilter = request -> (!StringUtils.isBlank(request.getSuvc())
&& StringUtils.isBlank(request.getSuffix()) && StringUtils.isBlank(request.getSite()));
一个选项是创建一个 returns a Predicate
:
private static Predicate<LocalRequestDTO> allFilter() {
return request -> (!StringUtils.isBlank(request.getSuvc()) &&
!StringUtils.isBlank(request.getSuffix()) &&
!StringUtils.isBlank(request.getSite()));
}
List<LocalRequestDTO> allDto = dtos.stream()
.filter(allFilter())
.collect(Collectors.toList());
另一种选择是将 Predicate
定义为常量:
private static final Predicate<LocalRequestDTO> SUVC_FILTER = request ->
(!StringUtils.isBlank(request.getSuvc()) &&
StringUtils.isBlank(request.getSuffix()) &&
StringUtils.isBlank(request.getSite()));
List<LocalRequestDTO> suvcDto = dtos.stream()
.filter(SUVC_FILTER)
.collect(Collectors.toList());
或者您可以创建一个接受 DTO 和 returns 布尔值的方法,完全不使用谓词 @Lino:
private static boolean doSuvcFilter(LocalRequestDTO request) {
return !StringUtils.isBlank(request.getSuvc()) &&
StringUtils.isBlank(request.getSuffix()) &&
StringUtils.isBlank(request.getSite());
}
List<LocalRequestDTO> suvcDto = dtos.stream()
.filter(ClassNameContainingMethod::doSuvcFilter)
.collect(Collectors.toList());