作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
您好,我正在使用 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/
我是一名优秀的程序员,十分优秀!