使用公共部分制作方法是很常见的,例如
public List<SomeObjDto> getSomeObject(final String s) {
List<SomeObj> someList = someRepo.getSome(s);
return toDto(someList);
}
public List<SomeObjDto> getSomeOtherObject(final String s) {
List<SomeObj> someList = someRepo.getSomeOther(s);
return toDto(someList);
}
private List<SomeObjDto> toDto(final List<SomeObj> list) {
return list.stream()
.map(SomeConverter::convert)
.collect(Collectors.toList());
}
因此,toDto方法存在,而不是编写map和collect。有没有办法不让该方法包含结果?例如,将它写成
return someRepo.getSome(s).stream.toDto();
或者像这样
return someRepo.getSome(s).andThen(toDto());
为了实现这一点,需要对getsome或toDto进行哪些必要的更改?(或类似于下面的内容)
发布于 2018-08-02 03:42:27
如果您决定不直接使用toDto
方法(就像现在一样),您可以像这样编写一个自定义mapping collector:
static Collector<SomeObj, ?, List<SomeObjDto>> toDtos() {
return Collectors.mapping(SomeConverter::convert, Collectors.toList());
}
它的用法会给你留下以下信息:
public List<SomeObjDto> getSomeObject(final String s) {
List<SomeObj> someList = someRepo.getSome(s);
return someList.stream().collect(toDtos());
}
public List<SomeObjDto> getSomeOtherObject(final String s) {
List<SomeObj> someList = someRepo.getSomeOther(s);
return someList.stream().collect(toDtos());
}
发布于 2018-08-01 23:40:06
你可以试试
return toDto(someRepo.getSome(s));
https://stackoverflow.com/questions/51636221
复制相似问题