欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA8学习之Lambda表达式

程序员文章站 2022-05-22 21:19:09
...

前言

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

http://www.jb51.net/books/454450.html
JAVA8学习之Lambda表达式

图片和链接是从脚本之家拿过来的,我自己是用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);
}

JAVA8学习之Lambda表达式

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

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