Java中的方法通常包含名称、返回类型和参数列表,以及方法体(包含执行的代码)。Java方法声明在类或接口中。从Java 8开始,引入了匿名函数(也称为Lambda表达式)。简单来说,匿名函数是没有名称的函数,无需在类或接口中声明,而是在需要时直接定义。它们主要用于作为方法参数或赋值给变量。
匿名函数语法
Java匿名函数的语法如下:
(parameters) -> { function body }
其中:
立即学习“Java免费学习笔记(深入)”;
例如,一个接收两个整数并返回其和的匿名函数:
(a, b) -> { return a + b; }
如果函数体只有一行代码,可以省略大括号和return关键字:
(a, b) -> a + b
如果编译器无法推断参数类型,需要显式声明:
var func = (int a, int b) -> a + b;
本质上,声明匿名函数时,实际上是通过匿名类实现了接口。匿名函数是实现函数式接口的一种方式,只能用于与函数式接口兼容的类型。
函数式接口
Java中,用@FunctionalInterface注解的接口被称为函数式接口,它们只有一个抽象方法(可以包含默认方法和静态方法)。
例如,Runnable接口就是一个函数式接口,其抽象方法为run():
使用匿名类实现Runnable:
Runnable r = new Runnable() { @Override public void run() { System.out.println("Hello, world!"); } };
使用Lambda表达式实现Runnable:
Runnable r = () -> System.out.println("Hello, world!");
这在多线程编程中非常有用:
public static void main(String[] args) { Runnable r = () -> System.out.println("Hello, world!"); new Thread(r).start(); }
java.util.function包提供了许多常用的函数式接口,例如:
示例:
Consumer
public static void main(String[] args) { Consumer<String> consumer = (s) -> System.out.println(s); consumer.accept("Hello, world!"); }
Supplier
public static void main(String[] args) { Supplier<Integer> supplier = () -> 10; int result = supplier.get(); }
Function
public static void main(String[] args) { Function<String, Integer> f = s -> s.length(); int len = f.apply("Java"); }
总结
Java中的匿名函数(Lambda表达式)提供了一种简洁、可读的方式来实现函数式接口。它们可以用于任何需要函数式接口的地方,例如方法参数、变量赋值等。java.util.function包提供了许多预定义的函数式接口,可以根据需要选择使用。
以上就是匿名lambda在Java中功能的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号