Java基础——lambda表达式

使用lambda表达式可以简化我们的代码,但是该表达式的使用有个前提:
实现接口方法,并且该接口中只有一个方法。
语法形式:

  • (parameters) -> expression
  • (parameters) -> {statements;}

基本用法

1、定义两个接口类,只有一个方法

package com.company;

/**
 * @author 
 * @date 2020/6/23
 */
public interface MathOperation {
    int operation(int a, int b);
}
package com.company;

/**
 * @author 
 * @date 2020/6/23
 */
public interface GreetingService {
    void sayMessage(String message);
}

2、labmda表达式语法实习

package com.company;

/**
 * @author 
 * @date 2020/6/23
 * 语法形式:
 * (parameters) -> expression
 * (parameters) -> {statements;}
 */
public class Java8Tester {
    public static void main(String args[]){
        Java8Tester tester = new Java8Tester();

        // 类型声明
        MathOperation addition = (int a, int b) -> a + b;

        // 类型声明可以省略
        MathOperation subtraction = (a, b) -> a - b;

        // 接口方法有返回值,大括号中需要有返回语句
        MathOperation multiplication = (int a, int b) -> { return a * b; };

        // 没有大括号,可以省略返回语句
        MathOperation division = (int a, int b) -> a / b;

        System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
        System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
        System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
        System.out.println("10 / 5 = " + tester.operate(10, 5, division));

        // 不用括号
        GreetingService greetService1 = message ->
                System.out.println("Hello " + message);

        // 用括号
        GreetingService greetService2 = (message) ->
                System.out.println("Hello " + message);

        greetService1.sayMessage("Runoob");
        greetService2.sayMessage("Google");
    }

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

3、使用lambda表达式创建线程

package com.company;

public class Main {

    public static void main(String[] args) {
      new Thread(new Runnable() {
          @Override
          public void run() {
              System.out.println("原来的实现多线程的方法");
          }
      }).start();
    //java8 lambda表达式
            new Thread(() ->
                System.out.println("这就是java8的创建线程的新方法")
            ).start();


    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章