当前位置: 首页 > 图灵资讯 > 技术篇> 匿名lambda在Java中功能

匿名lambda在Java中功能

来源:图灵教育
时间:2025-02-18 20:52:22

匿名lambda在java中功能

Java中的方法通常包括名称、返回类型和参数列表,以及方法体(包括执行代码)。Java方法在类别或接口中声明。从Java开始 从8开始,引入了匿名函数(也称为Lambda表达式)。简单地说,匿名函数是一种没有名称的函数,不需要在类别或界面中声明,而是在需要时直接定义。它们主要用作方法参数或赋值变量。

匿名函数语法

Java匿名函数语法如下:

(parameters) -> { function body }

其中:

立即学习“Java免费学习笔记(深入);

  • parameters:函数参数(可省略)。
  • ->:分隔参数和函数体的箭头操作符。
  • function body:函数体,可以是单行代码或代码块。

例如,一个匿名函数接收两个整数并返回其和:

(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:在不返回任何值的情况下接受一个参数。
  • Supplier:不接受参数,返回一个值。
  • 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包提供了许多可根据需要选择使用的预定义函数接口。

以上是Java匿名lambda功能的详细内容。请关注图灵教育的其他相关文章!