JAVA8学习之Lambda表达式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wu6660563/article/details/78822596

前言

最近项目中用到了Springcloud,而Springcloud中几乎都是Java8构建,恰巧使用了Lambda表达式,lambda表达式一直如雷贯耳,但是因为项目几乎都是在JDK7上面跑的,也就没去深入重点研究。因为现在真正用到了Java8,专门花大量时间去攻读了Java8的书,推荐下面这本书

http://www.jb51.net/books/454450.html
这里写图片描述

图片和链接是从脚本之家拿过来的,我自己是用ipad看的

语法

Lambda表达式的语法
基本语法:
(parameters) -> expression

(parameters) ->{ statements; }

举例

基本使用

在没有lambda之前,我们写一个方法,然后固定返回一个对象

public int MyNumber() {
    return 1234;
}

使用Lambda之后:
定义接口

public interface MyNumber {

    int getValue();

}

使用

MyNumber myNumber;
myNumber = ()->1234;
System.out.println(myNumber.getValue());

类似的有:

(int x, int y) -> x + y

(String s) -> { System.out.println(s); }

(n) -> {
    int result = 1;
    for(int i = 1; i <= n; i++)result = i * result;
    return result;
}

泛型使用

interface Func<T> {
    T func(T t);
}
Func<String> aa = (str) -> {
            String result = "";
            result = result + str;
            return result;
        };
        System.out.println(aa.func("Hello"));

        Func<Integer> bb = (num) -> {
            num *= 10;
            return num;
        };
        System.out.println(bb.func(10));

作为参数传递+泛型

public static void main(String[] args) {
    //字符类型
    String instr = "AbdafdBDAC";
    String outStr = (String) test((str) -> str.toLowerCase(), instr);
    System.out.println(outStr);

    //代码块演示
    String instr2 = "AbdafdBDAC";
    String outStr2 = (String) test((str) -> {
        String result = " -Hello-Nick- ";
        return str + result;
    }, instr2);
    System.out.println(outStr2);

    //Integer类型
    Integer inInteg = 1234;
    Integer outInteg = (Integer) test((str) -> 100 * 10, inInteg);
    System.out.println(outInteg);
}

这里写图片描述

java.util.function包中的预定义函数式接口

接口 用途
UnaryOperator 对类型为T的对象应用一元预算,并返回结果。结果的类型也是T。包含的方法名为apply()
BinaryOperator 对类型为T的两个对象应用操作,并返回结果。结果的类型也是T。包含的方法名为apply()
Consumer 对类型为T的对象应用操作。包含的方法名为accept()
Supplier 返回类型为T的对象。包含的方法名为get()
Function 对类型为T的对象应用操作,并返回结果。结果是类型为R的对象。包含的方法名为apply()
Predicate 确定类型为T的对象是否满足某种约束,并返回指定结果的布尔值。包含的方法名为test()

猜你喜欢

转载自blog.csdn.net/wu6660563/article/details/78822596
今日推荐