2011-12-13 35 views

回答

0

對不起,它仍然不存在於Java 7中。您將不得不等待Java 8,其中將執行閉包。與此同時,您可以使用FunctionalJava,Guava或與JVM兼容的閉合語言,如Groovy。

+0

我沒有在番石榴看到任何東西。你有什麼具體的想法? – 2011-12-13 22:58:52

0

只是爲了好玩 - 這裏是如何做到這一點無需外部庫:

return fold(collectionOfInts, 0, ADD); 

哦,這裏的休息:)

static <X, Y> X fold(final Iterable<? extends Y> gen, final X initial, final Function2<? super X, ? super Y, ? extends X> function) { 
    final Iterator<? extends Y> it = gen.iterator(); 
    if (!it.hasNext()) { 
    return initial; 
    } 
    X acc = initial; 
    while (it.hasNext()) { 
    acc = function.apply(acc, it.next()); 
    } 
    return acc; 
} 

static final Function2<Integer, Integer, Integer> ADD = new Function2<Integer, Integer, Integer>() { 
    @Override 
    public Integer apply(Integer a, Integer b) { 
    return a + b; 
    } 
}; 

interface Function2<A, B, C> { 
    C apply(A a, B b); 
} 
相關問題