JavaSE:Java8 新特性 - Lambda表达式

1.  简介

    Lambda表达式,是实例化函数式接口的重要方式,使用 Lambda 表达式可以使代码变得更加简洁紧凑

 

2.  

    参数列表、箭头符号 -> 和 方法体组成, 而方法体中可以是表达式, 也可以是语句块

 

3.

    语法格式:

      (参数列表) -> {方法体;}

          其中()、参数类型、{}以及 return关键字 可以省略

 

4.  示例:

      Lamda表达式实现函数式接口

 1 package com.lagou.task22;
 2 
 3 import java.util.Comparator;
 4 import java.util.function.Consumer;
 5 import java.util.function.Function;
 6 import java.util.function.Predicate;
 7 import java.util.function.Supplier;
 8 
 9 public class FunctionalInterfaceTest {
10 
11     public static void main(String[] args) {
12 
13         // 1.匿名内部类的语法格式: 父类/接口类型  引用变量名 = new 父类/接口类型(){ 方法的重写 };
14         Runnable runnable = new Runnable() {
15             @Override
16             public void run() {
17                 System.out.println("我是既没有参数又没有返回值的方法!");
18             }
19         };
20         runnable.run(); // 我是既没有参数又没有返回值的方法!
21 
22         // 使用lambda表达式实现函数式接口对象的创建: (参数列表)->{方法体;}
23         //Runnable runnable1 = () -> { System.out.println("我是既没有参数又没有返回值的方法!"); };
24         Runnable runnable1 = () -> System.out.println("我是既没有参数又没有返回值的方法!");
25         runnable1.run();
26 
27         System.out.println("----------------------------------------------------------------------");
28         Consumer consumer = new Consumer() {
29             @Override
30             public void accept(Object o) {
31                 System.out.println(o + "有参但没有返回值的方法就是我!");
32             }
33         };
34         consumer.accept("友情提示:"); // 友情提示:有参但没有返回值的方法就是我!
35 
36         //Consumer consumer1 = (Object o) -> {System.out.println(o + "有参但没有返回值的方法就是我!");};
37         //Consumer consumer1 = (o) -> System.out.println(o + "有参但没有返回值的方法就是我!");
38         // 省略了()、参数类型、{}, 自动类型推断
39         Consumer consumer1 = o -> System.out.println(o + "有参但没有返回值的方法就是我!");
40         consumer1.accept("友情提示:");
41 
42         System.out.println("----------------------------------------------------------------------");
43         Supplier supplier = new Supplier() {
44             @Override
45             public Object get() {
46                 return "无参有返回值!";
47             }
48         };
49         System.out.println(supplier.get()); // 无参有返回值
50 
51         //Supplier supplier1 = () -> {return "无参有返回值!";};
52         Supplier supplier1 = () -> "无参有返回值!";
53         System.out.println(supplier1.get());
54 
55         System.out.println("----------------------------------------------------------------------");
56         Function function = new Function() {
57             @Override
58             public Object apply(Object o) {
59                 return o;
60             }
61         };
62         System.out.println(function.apply("有参有返回值的方法")); // 有参有返回值的方法
63 
64         // return 和 {} 都可以省略
65         Function function1 = o -> o;
66         System.out.println(function1.apply("有参有返回值的方法"));
67 
68         System.out.println("----------------------------------------------------------------------");
69         Comparator comparator = new Comparator() {
70             @Override
71             public int compare(Object o1, Object o2) {
72                 return 0;
73             }
74         };
75         System.out.println(comparator.compare(10, 20)); // 0
76 
77         Comparator comparator1 = (o1, o2) -> 0;
78         System.out.println(comparator1.compare(10, 20));
79 
80         System.out.println("----------------------------------------------------------------------");
81         Predicate predicate = new Predicate() {
82             @Override
83             public boolean test(Object o) {
84                 return false;
85             }
86         };
87         System.out.println(predicate.test("hello")); // false
88 
89         Predicate predicate1 = o -> false;
90         System.out.println(predicate1.test("hello"));
91     }
92 }

 

posted @ 2021-06-29 11:37  Jasper2003  阅读(38)  评论(0编辑  收藏  举报