通常用共同的部分来制作方法
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方法。 有没有办法不包含结果的方法?例如将其写为
return someRepo.getSome(s).stream.toDto();
或喜欢
return someRepo.getSome(s).andThen(toDto());
为了变得可行或为了使toD变得必要,必须进行哪些更改?(或类似的东西)
答案 0 :(得分:1)
如果确定不直接使用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());
}
答案 1 :(得分:0)
您可以尝试
return toDto(someRepo.getSome(s));