我该如何重写它以使用lambda

我该如何重写它以使用lambda,lambda,java-8,Lambda,Java 8,如何重写以下内容以使用lambda而不是内部函数: List<ExtraService> extraServices = product.getServices().getExtraService().stream() .map(new Function<com.novasol.bookingflow.api.entities.products.ExtraService, ExtraService>() { @Ov

如何重写以下内容以使用lambda而不是内部函数:

List<ExtraService> extraServices = product.getServices().getExtraService().stream()
            .map(new Function<com.novasol.bookingflow.api.entities.products.ExtraService, ExtraService>() {

                @Override
                public ExtraService apply(com.novasol.bookingflow.api.entities.products.ExtraService es) {
                    ExtraService extraService = new ExtraService();
                    extraService.setServiceId(es.getServiceID());
                    extraService.setPriceUnitCode(es.getPriceUnitCode().intValue());
                    extraService.setServiceGroup(es.getServiceGroup().intValue());
                    extraService.setMaxUnits(es.getMaxUnits().intValue());

                    return extraService;
                }

            }).collect(toList());
List extraServices=product.getServices().getExtraService().stream()
.map(新函数(){
@凌驾
公共额外服务申请(com.novasol.bookingflow.api.entities.products.ExtraService es){
外部服务外部服务=新的外部服务();
setServiceId(es.getServiceID());
setPriceUnitCode(es.getPriceUnitCode().intValue());
setServiceGroup(es.getServiceGroup().intValue());
setMaxUnits(es.getMaxUnits().intValue());
返回外部服务;
}
}).collect(toList());
类似

List<ExtraService> extraServices = product.getServices().getExtraService().stream()
        .map( es -> {
                ExtraService extraService = new ExtraService();
                extraService.setServiceId(es.getServiceID());
                extraService.setPriceUnitCode(es.getPriceUnitCode().intValue());
                extraService.setServiceGroup(es.getServiceGroup().intValue());
                extraService.setMaxUnits(es.getMaxUnits().intValue());

                return extraService;
            }

        ).collect(toList());
List extraServices=product.getServices().getExtraService().stream()
.map(es->{
外部服务外部服务=新的外部服务();
setServiceId(es.getServiceID());
setPriceUnitCode(es.getPriceUnitCode().intValue());
setServiceGroup(es.getServiceGroup().intValue());
setMaxUnits(es.getMaxUnits().intValue());
返回外部服务;
}
).collect(toList());

您有两个选择

首先-在方法中声明一个函数

Function<com.novasol.bookingflow.api.entities.products.ExtraService, ExtraService> toService = es -> {
        ExtraService extraService = new ExtraService();
        extraService.setServiceId(es.getServiceId());
        extraService.setPriceUnitCode(es.getPriceUnitCode().intValue());
        extraService.setServiceGroup(es.getServiceGroup().intValue());
        extraService.setMaxUnits(es.getMaxUnits().intValue());
        return extraService;
    };

    List<ExtraService> extraServices = product.getServices().getExtraService()
            .stream()
            .map(toService)
            .collect(toList());
Function-to-service=es->{
外部服务外部服务=新的外部服务();
setServiceId(es.getServiceId());
setPriceUnitCode(es.getPriceUnitCode().intValue());
setServiceGroup(es.getServiceGroup().intValue());
setMaxUnits(es.getMaxUnits().intValue());
返回外部服务;
};
List extraServices=product.getServices().getExtraService()
.stream()
.map(toService)
.collect(toList());
第二个-声明一个执行转换的新方法,并使用对其的方法引用

 private ExtraService toService(com.novasol.bookingflow.api.entities.products.ExtraService es) {
        ExtraService extraService = new ExtraService();
        extraService.setServiceId(es.getServiceId());
        extraService.setPriceUnitCode(es.getPriceUnitCode().intValue());
        extraService.setServiceGroup(es.getServiceGroup().intValue());
        extraService.setMaxUnits(es.getMaxUnits().intValue());
        return extraService;
}

public void yourCurrentMethod() {
        List<ExtraService> extraServices = product.getServices().getExtraService()
            .stream()
            .map(this::toService)
            .collect(toList());
     ...
}
private-ExtraService-to-service(com.novasol.bookingflow.api.entities.products.ExtraService-es){
外部服务外部服务=新的外部服务();
setServiceId(es.getServiceId());
setPriceUnitCode(es.getPriceUnitCode().intValue());
setServiceGroup(es.getServiceGroup().intValue());
setMaxUnits(es.getMaxUnits().intValue());
返回外部服务;
}
public-void-yourCurrentMethod(){
List extraServices=product.getServices().getExtraService()
.stream()
.map(此::toService)
.collect(toList());
...
}

另一个想法是创建一个复制构造函数,然后使用
.map(ExtraService::new)
@AlexisC。有趣的一点-像这个的清洁度,并将在这里做一些实验:-)谢谢,这正是我想要的。谢谢你的回答:-)