java 8的新特性 之Lambda表达式

public class LambdaDemo {
    public void printSomething(String something) {
        System.out.println(something);
    }
 
    public static void main(String[] args) {
        LambdaDemo demo = new LambdaDemo();
        String something = "I am learning Lambda";
        demo.printSomething(something);
    }
}

这个是一段经典的oop开发场景.
下面一个例子使用了行为传递方式,而不是变量传递的等效实现.

public class LambdaDemo {
    interface Printer {
        void print(String val);
    }
 
    public void printSomething(String something, Printer printer) {
        printer.print(something);
    }
}


public static void main(String[] args) {
    LambdaDemo demo = new LambdaDemo();
    String something = "I am using a Functional interface";
    Printer printer = new Printer() {
        @Override
        public void print(String val) {
            System.out.println(val);
        }
    };
    demo.printSomething(something, printer);
}

Lambda 表达式原被用于定义一个函数式接口的内联实现。

(param1,param2,param3…,paramN) - > {//代码块;}
一个 lambda 表达式的组成,是一个我们通常会定义在方法声明中的,以括弧封闭起来并以逗号分隔的参数列表,后面跟上一个箭头标记指向要执行的代码。现在,让我们来使用 lambda 对上面的代码进行重构:

public static void main(String[] args) {
    LambdaDemo demo = new LambdaDemo();
    String something = "I am learning Lambda";
    /**/
    Printer printer = (String toPrint)->{System.out.println(toPrint);};
    /**/
    demo.printSomething(something, printer);
}

在这里插入图片描述

在参数为这些接口的地方,我们就可以直接使用lambda表达式了!
Predicate——接收T对象并返回boolean
Consumer——接收T对象,不返回值
Function<T, R>——接收T对象,返回R对象
Supplier——提供T对象(例如工厂),不接收值
UnaryOperator——接收T对象,返回T对象
BinaryOperator——接收两个T对象,返回T对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值