如何使用Lambda表达式作为参数传递给方法?

Java Lambda表达式可以作为参数传递给方法或函数,这也是Lambda表达式的一大特点与用途。
例如,我们可以定义一个接口与抽象方法:

public interface MathOperation {
    int operate(int a, int b);
}

然后定义一个方法,接收该接口的实现作为参数:

public int operate(int a, int b, MathOperation mathOperation) {
    return mathOperation.operate(a, b);
}

在调用该方法时,可以传递一个Lambda表达式作为参数:

int result = operate(1, 2, (x, y) -> x + y); 

这里,(x, y) -> x + y是一个Lambda表达式,实现了MathOperation接口,所以可以作为operate方法的参数传入。
再举一个集合排序的例子:

List<Integer> list = Arrays.asList(1, 3, 4, 2);

// 使用Lambda表达式排序     
list.sort((x, y) -> {  
    if (x < y) return -1;
    if (x > y) return 1;
    return 0;  
}); 

这里,(x, y) -> {…}是一个Lambda表达式,实现了比较器Comparator接口,所以可以作为list.sort()方法的排序规则传入。
再例如事件监听器的注册:

button.setOnAction(event -> {
    System.out.println("Button clicked!");
});

这里,event -> {…}是一个Lambda表达式,实现了ActionEvent接口,所以可以作为setOnAction方法的参数传入,成为按钮的点击事件监听器。
通过以上几个例子,希望可以加深你对Lambda表达式作为参数传递的理解。这是Lambda表达式的重要用途之一,也是我们理解函数式接口(Functional Interface)的关键。