我已经开始学习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));
答案 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);
}
}