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

Java函数式接口:lambda表达式的使用

发布时间:2023-06-05 10:01:55

Java函数式接口可以告诉编译器这个接口里面只有一个抽象方法,让编译器更好地进行检查和优化,同时也让我们可以使用lambda表达式来代替这个接口的实现。在Java 8中引入了很多内置的函数式接口,例如Predicate、Consumer、Function、Supplier等,这些接口可以让我们更方便地使用lambda表达式。

在使用lambda表达式之前,我们需要明白它的语法。它的基本语法为:参数列表 -> 表达式/代码块。例如,以下是一个接收两个整数参数并返回它们的和的lambda表达式:

(int a, int b) -> a + b

如果需要执行多条语句,则需要使用代码块的形式。例如:

(int a, int b) -> {

    int sum = a + b;

    return sum;

}

接下来,我们将简单介绍几个常用的函数式接口。

1. Predicate

这个接口可以用来判断一个对象是否满足某个条件。它只有一个抽象方法:

boolean test(T t);

例如,以下是一个判断一个数是否是正数的lambda表达式:

Predicate<Integer> isPositive = (Integer num) -> num > 0;

2. Consumer

这个接口可以用来消费一个对象并执行某些操作,它只有一个抽象方法:

void accept(T t);

例如,以下是一个打印一个字符串的lambda表达式:

Consumer<String> printString = (String str) -> System.out.println(str);

3. Function

这个接口可以用来将一个对象转换为另一个对象,它只有一个抽象方法:

R apply(T t);

例如,以下是一个将一个字符串转换为整数的lambda表达式:

Function<String, Integer> stringToInt = (String str) -> Integer.parseInt(str);

4. Supplier

这个接口可以用来提供一个对象,它只有一个抽象方法:

T get();

例如,以下是一个提供当前时间戳的lambda表达式:

Supplier<Long> currentTime = () -> System.currentTimeMillis();

使用lambda表达式可以让我们更方便地实现函数式编程,从而提高代码的可读性和效率。同时,Java的函数式接口也可以让我们更好地指定接口的用途,提高代码的健壮性。