关于Java 中的 Lambda 表达式
作者:海拥
这篇文章我们将讨论关于Java
中的 Lambda
表达式,Lambda
表达式是 Java
涉足函数式编程的过程。它接受参数并将其应用于表达式或代码块。以下是语法的基本示例:
(parameter1, parameter2) => expression
或者
(parameter1, parameter2) => {code block}
Lambda
表达式非常有限,如果它不是 void
,则必须立即返回一个值。他们不能使用诸如 if
或 for
之类的关键字来保持简单性。如果需要更多行代码,则可以改用代码块。
现在在实现 lambda
表达式时,不能只使用表达式。Lambda
是函数式接口的实现。函数式接口是只有一个抽象方法的接口。lambda
的好处是它们允许你实现方法而无需实现接口的类和实例化对象。
下面是一个例子:
interface FuncInterface { // 抽象函数 void abstractFun(int x); // 非抽象(或默认)函数 default void normalFun() { System.out.println("Hello"); } } class Test { public static void main(String args[]) { // 实现上述功能接口的 lambda 表达式。 // 该接口默认实现 abstractFun() FuncInterface fobj = (int x)->System.out.println(2*x); // 这会调用上面的 lambda 表达式并打印 10。 fobj.abstractFun(5); } }
Lambda
表达式通常用作函数的参数。为了提高可读性,你还可以将 lambda
表达式存储在变量中,只要该类型是一个只有一个方法、相同数量的参数和相同返回类型的接口。
import java.util.ArrayList; import java.util.function.Consumer; public class Main { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayList<Integer>(); numbers.add(5); numbers.add(9); numbers.add(8); numbers.add(1); Consumer<Integer> method = (n) -> { System.out.println(n); }; numbers.forEach( method ); } }
lambda
的一个常见用途是创建线程。这是一个使用 lambda
代码块实现 Runnable
对象的示例,供线程执行。
// 可运行的 Lambda Runnable task2 = () -> { System.out.println("Task #2 is running"); }; // 启动线程 new Thread(task2).start();
作为初学者,我们大多数人都被教导使用 OOP 概念进行编程,因此使用不同的范式(如函数式编程)可能会有些别扭。我自己仍在学习这些概念中。不管怎样我希望这篇文章能让大家学到一些东西。如果你有更多问题或想深入研究该主题,欢迎评论或者查看下方的资料,提取的代码示例也来自如下参考资料
参考资料:
www.geeksforgeeks.org/lambda-expr…
www.developer.com/microsoft/s…
www.codejava.net/java-core/t…
到此这篇关于关于Java 中的 Lambda 表达式的文章就介绍到这了,更多相关Java 中 Lambda 表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!