如何工作java lambda?我不明白

时间:2016-02-18 05:26:28

标签: java lambda

我已经开始学习Java lambda了,我不明白。我找到了一个例子。

 String[] atp = {"Rafael Nadal", "Novak Djokovic", "Stanislas Wawrinka", "David Ferrer", "Roger Federer", "Andy Murray", "Tomas Berdych", "Juan Martin Del Potro"};

players.forEach((player) -> System.out.print(player + "; "));

它工作正常,但我的代码不起作用。

public class Counter {

    String[] atp = {"Rafael Nadal", "Novak Djokovic", "Stanislas Wawrinka", "David Ferrer", "Roger Federer", "Andy Murray", "Tomas Berdych", "Juan Martin Del Potro"};
    List<String> players =  Arrays.asList(atp);
    private int a = 7;
    private int b = 7;

    public int summ(int a, int b) {
        return a + b;
    }

    public void print(){
        players.forEach((player) -> System.out.print(player + "; "));
        summ((a,b)-> System.out.print(a + b));
    }
}

我想了解lambda是如何工作的。

这不起作用 -     summ((a,b)-> System.out.print(a + b));

1 个答案:

答案 0 :(得分:1)

您可以将lambda用于功能接口。

什么是功能界面?

它基本上是一个只有抽象方法的接口(,但可以有其他默认方法,例如

最常见的例子是Predicate界面。

public interface Predicate <T> {
    boolean test(T t);
    // Other methods
}

这个采用任何Object(泛型)并返回一个布尔基元。

因此,我们想要使用此接口测试条件以在循环中查找对号,我们编写以下代码。

Predicate<Integer> function = a -> a%2 == 0;

for (int i = 0 ; i < 10 ; i++){
    if (function.test(i)){         // The primitive is AutoBoxed into an Integer Object here
        System.out.println(i);
    }
}