java – 奇怪的番石榴代码

我无法访问以下代码段:

prices = pricesService.getProductsByCategory(category);
List<Double> discountedPrices = 
    Lists.newArrayList(Iterables.transform(prices, new Function<Double, Double>() {
        public Double apply(final Double from) {
            return from *.88;
        }
    }));

我知道代码的结果是什么,并且它在单元测试中是正确的,但我不太熟悉番石榴或者这个实现如何/为什么有效.目前,如果列表’价格’中存在空值,它似乎也不安全吗?所以我追求的是:

>关于代码如何工作的一般解释.
>它目前是否安全?如果不是它怎么能成为?

最佳答案
它创建了一个新的双打列表,原始值为0.88 *.

结构是:

匿名内部阶级

这是一种有时在Java中完成回调/闭包的方法.另见Java tutorial.

new Function<Double, Double>() {
    public Double apply(final Double from) {
        return from *.88;
    }
}

使用上述函数回调

Iterables.transform(prices, *func*)

将结果转换为ArrayList

以上结果是Iterable,因此需要将其存储到列表中.另见Lists.newArrayList vs new ArrayList

Lists.newArrayList( ... )

转载注明原文:java – 奇怪的番石榴代码 - 代码日志