「Java8 Lambda表达式」

Java8新特性 Lambda表达式

1-基本语法

左边:Lambda表达式形参列表

右边:Lambda表达式重写的方法体,接口中需要重写的方法

对于接口,以前的做法是在大括号内重写匿名内部类,完成接口方法的重写,这一次可以使用Lambda表达式完成。

2-六种使用方法

import org.junit.Test;

import java.util.Comparator;
import java.util.function.Consumer;

public class LambdaTest {
    // 方法1:无参、无返回值的写法
    
    @Test
    public void test1() {
        Runnable r1 = () -> System.out.println("哈哈");
        r1.run();
    }

    // 方法2:带参、无返回值
    
    @Test
    public void test2() {
        Consumer<String> com = (String s) -> {
            System.out.println(s);
        }; // 整个作为对象出现,需要补分号

        com.accept("喜喜");
    }
    // 方法3:省略数据类型的写法
    @Test
    public void test3(){
        Consumer<String> con = (s) ->{
            System.out.println(s);
        }
    }
    // 方法4:带一个参数,无返回值,同时省略小括号与数据类型
    
    @Test
    public void test3(){
        Consumer<String> con = s ->{
            System.out.println(s);
        };
        con.accept("你好xxx!");
    }
    // 方法5:带两个参数,并且有返回值
    
    @Test
    public void test4(){
        Comparator<Integer> com = (x,y)->{
            System.out.println("函数实现的比较方法");
            return Integer.compare(x,y);
        };
        System.out.println(com.compare(3,4));
    }
    // 方法6:Lambda表达式只有一条执行语句时,省略大括号与return
    
    @Test
    public void test5(){
        Comparator<Integer> com = (x,y)-> Integer.compare(x,y);
        System.out.println(com.compare(100,50));
    }
}

3-函数式接口

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

函数式接口可以被隐式转换为 lambda 表达式。

函数式接口的类型有:

消费型:接收值,但不返回

函数型:接收值,返回另一个值

供给型:不接收值,但返回对象

判断型:确定传入的值是否满足某个约束,返回True和False

4-总结

关于左边:lambda形参列表的参数类型可以省略,如果只有一个参数,那么小括号也可以省略

关于右边:lambda体使用{};包裹,如果Lambda只有一条语句,则可以省略{}与return关键字

如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口。我们可以在一个接口上使用 @FunctionalInterface 注解,

这样做可以检查它是否是一个函数式接口。

Lambda表达式的本质:作为函数式接口的实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值