欢迎访问宙启技术站
智能推送

Java函数的Lambda表达式使用方法及注意事项。

发布时间:2023-06-16 01:33:09

Lambda表达式是Java 8中引入的一个新特性,它是一种精简的函数式编程方法,可以用更简洁的方式来实现函数式接口的实例化。

Lambda表达式的基本语法如下:

(parameter) -> expression

(parameter) -> { statements; }

其中,parameter表示方法的参数,expression或statements表示方法的返回值或执行的语句,实现了函数式接口的实例化。

Lambda表达式的使用方法

Lambda表达式的使用方法主要有以下几种:

1. 变量赋值

可以将Lambda表达式赋值给一个函数式接口变量,这个变量可以接收函数式接口实现类的实例或Lambda表达式。

例:

List<String> names = new ArrayList<>();

names.add("John");

names.add("Smith");

names.forEach(name -> System.out.println(name));

2. 作为函数式接口的实例

Lambda表达式可以作为函数式接口的实例传递给方法,实现回调。

例:

public interface Calculator {

    int calculate(int a, int b);

}

public class Main {

    public static void main(String[] args) {

        Calculator calculator = (a, b) -> a + b;

        int result = calculate(calculator, 2, 3);

        System.out.println(result);

    }

    public static int calculate(Calculator calculator, int a, int b) {

        return calculator.calculate(a, b);

    }

}

3. 链式调用

Lambda表达式可以用于链式调用,例如Stream API中的map和filter方法。

例:

List<String> names = new ArrayList<>();

names.add("John");

names.add("Smith");

long count = names.stream().filter(name -> name.length() > 4)

                    .map(String::toUpperCase)

                    .count();

System.out.println(count);

4. 启动线程

Lambda表达式可以用于启动线程。

例:

new Thread(() -> {

    // 线程执行的代码

}).start();

Lambda表达式的注意事项

1. 形参类型可以省略,但推荐写上。

2. 表达式体和代码块体不可混用。

3. 表达式体只有一条语句时,可省略大括号;若有多条语句,则必须写大括号,并用分号分隔语句。

4. Lambda表达式中所使用的变量必须是final或effectively final的。

5. Lambda表达式不能访问非final的局部变量。

6. Lambda表达式中可以有多个参数,中间以逗号隔开。

7. Lambda表达式可以没有参数,但必须保留空的括号。

总结

Lambda表达式是Java 8中引入的一个新特性,可以用更简洁的方式来实现函数式接口的实例化。它的使用方法包括变量赋值、作为函数式接口的实例、链式调用以及启动线程等。需要注意的是,Lambda表达式中所使用的变量必须是final或effectively final的,且Lambda表达式不能访问非final的局部变量。