1.简单例子
// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y // 4. 接收2个int型整数,返回他们的和 (int x, int y) -> x + y // 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void) (String s) -> System.out.print(s)
2.主要用于代替匿名内部类使用,使编程更简单
//例1 package com.wuxianjiezh.demo.lambda; @FunctionalInterface public interface WorkerInterface { public void doWork(); } class WorkTest { public static void main(String[] args) { // 通过匿名内部类调用 WorkerInterface work = new WorkerInterface() { @Override public void doWork() { System.out.println("通过匿名内部类调用"); } }; work.doWork(); // 通过 Lambda 表达式调用 // Lambda 表达式实际上是一个对象。 // 我们可以将 Lambda 表达式赋值给一个变量,就可像其它对象一样调用。 work = ()-> System.out.println("通过 Lambda 表达式调用"); work.doWork(); } }
运行结果:
通过匿名内部类调用
通过 Lambda 表达式调用
//例2:线程初始化 // Old way new Thread(new Runnable() { @Override public void run() { System.out.println("Hello world"); } }).start(); // New way new Thread( () -> System.out.println("Hello world") ).start();
//例3:事件处理 // Old way button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("Hello world"); } }); // New way button.addActionListener( (e) -> { System.out.println("Hello world"); });