首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何处理方法调用后的转换

如何处理方法调用后的转换
EN

Stack Overflow用户
提问于 2018-08-01 22:44:48
回答 2查看 67关注 0票数 2

使用公共部分制作方法是很常见的,例如

代码语言:javascript
复制
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。有没有办法不让该方法包含结果?例如,将它写成

代码语言:javascript
复制
 return someRepo.getSome(s).stream.toDto();

或者像这样

代码语言:javascript
复制
 return someRepo.getSome(s).andThen(toDto());

为了实现这一点,需要对getsome或toDto进行哪些必要的更改?(或类似于下面的内容)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-02 03:42:27

如果您决定不直接使用toDto方法(就像现在一样),您可以像这样编写一个自定义mapping collector

代码语言:javascript
复制
static Collector<SomeObj, ?, List<SomeObjDto>> toDtos() {
    return Collectors.mapping(SomeConverter::convert, Collectors.toList());
}

它的用法会给你留下以下信息:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-08-01 23:40:06

你可以试试

代码语言:javascript
复制
 return toDto(someRepo.getSome(s));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51636221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档