gpt4 book ai didi

Java:Commons-Collections 泛型:如何让自定义转换器工作

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:34:26 24 4
gpt4 key购买 nike

您好,我正在使用 commons collections generics 4.01。

我有一个 dto 对象。

Class PricingDto {
private Double tax;
private Double price;
private Double tip;

// getters and setters
}

我有一个 List<PricingDto> pricingDtos = this.pricingService.getAllPricings(); 的列表

比我有一个私有(private)静态类。

import org.apache.commons.collections15.Transformer;
import org.apache.commons.collections15.list.TransformedList;

class TotalServiceImpl implements TotalService {
public static final PricingDtoTransformer PRICING_DTO_TRANSFORMER =
new PricingDtoTransformer();
private static class PricingDtoTransformer
implements Transformer<PricingDto, Double> {
public PricingDtoTransformer() {}

@Override
public Double transform(final PricingDto pricingDto) {
return pricingDto.getTax()
+ pricingDto.getPrice()
+ pricingDto.getTips();
}
}

@Override
public List<Double> getListDouble(final List<PricingDto> pricingDtos) {
final List<Double> totalList =
TransformedList.decorate(pricingDtos, PRICING_DTO_TRANSFORMER);
for (Double d : totalList) {
// print them.
}
}
}
}

我的问题是我得到类转换异常,因为 totalList 中的每个项目都是 PricingDto 而不是 Double。

2.) 我做错了什么。为泛型公共(public)集合实现自定义转换器的正确方法是什么。

最佳答案

javadocs明确指出:

If there are any elements already in the list being decorated, they are NOT transformed.

请尝试以下操作:

CollectionUtils.transform(pricingDtos, PRICING_DTO_TRANSFORMER);

这将通过将 Transformer 应用于每个元素来转换集合。

关于Java:Commons-Collections 泛型:如何让自定义转换器工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4714363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com