将 lambda 表达式与你自己的功能接口一起使用

Lambdas 旨在为单个方法接口提供内联实现代码,并且能够像我们使用常规变量一样传递它们。我们称之为功能界面。

例如,在匿名类中编写 Runnable 并启动 Thread 看起来像:

//Old way
new Thread(
        new Runnable(){
            public void run(){
                System.out.println("run logic...");
            }
        }
).start();

//lambdas, from Java 8
new Thread(
        ()-> System.out.println("run logic...")
).start();

现在,按照上面的说法,假设你有一些自定义界面:

interface TwoArgInterface {
    int operate(int a, int b);
}

你如何使用 lambda 在你的代码中实现这个接口?与上面显示的 Runnable 示例相同。请参阅下面的驱动程序:

public class CustomLambda {
    public static void main(String[] args) {

        TwoArgInterface plusOperation = (a, b) -> a + b;
        TwoArgInterface divideOperation = (a,b)->{
            if (b==0) throw new IllegalArgumentException("Divisor can not be 0");
            return a/b;
        };

        System.out.println("Plus operation of 3 and 5 is: " + plusOperation.operate(3, 5));
        System.out.println("Divide operation 50 by 25 is: " + divideOperation.operate(50, 25));

    }
}