logo头像

分享技术,品味人生

Java核心基础之lambda

Java8带来了很多新特性,如函数式编程、接口默认实现,这边主要介绍lambda函数式编程,让代码更简洁高效!

前言

Lambda俗称函数式编程,也称为闭包,是将函数作为方法参数传入,快速实现接口!将代码更紧凑,接下来让我们来看看

接口匿名类实现与闭包的对比!

我们先看看两种代码的对比

接口匿名类与闭包实现的代码演示

public class TestLambda {
    interface iTest{
        public int add(int i1, int i2);
    }

    @Test
    void test1() {
        //接口的匿名类实现
        iTest i1 = new iTest() {
            @Override
            public int add(int i1, int i2) {
                return i1+i2;
            }
        };
        Assertions.assertEquals(i1.add(5, 6),11,"测试不成功!");
    }

    @Test
    void test2() {
        //接口的闭包实现
        iTest i1 = (a,b)-> a+b;
        Assertions.assertEquals(i1.add(5, 6),11,"测试不成功!");
    }
}

小结:闭包的实现确实简化了很多,也不太容易理解,主要有这么几点

  • 可选的类型声明,变量的类型定义可选,也就是没有啦,让编译器自动识别并转换。
  • 可选的参数圆括号多个参数还是需要的!
  • 可选的大括号,多个语句还是需要的!
  • 可选的return,多个语句,也就是有花括号时是需要return的!

更多的示例

// 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)

评论系统未开启,无法评论!