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

Java中的匿名函数是什么?如何使用它们?

发布时间:2023-07-03 04:24:12

Java中的匿名函数(Anonymous Functions)又称为Lambda表达式,是一种可以直接定义在代码中的函数,没有函数名,可以直接传递给其他函数或方法使用。

使用匿名函数可以使代码变得更简洁,减少了定义额外的方法的麻烦。通过使用Lambda表达式,可以将函数作为一种参数传递给其他方法,并在其他方法中进行使用。

使用Lambda表达式的语法如下:

(parameters) -> expression

其中,parameters 是一个表示参数的列表,可以为空或者包含一个或多个参数;expression 是一个表示Lambda函数体的表达式。

下面是一个简单的Lambda表达式的例子:

int[] numbers = {1, 2, 3, 4, 5};

Arrays.stream(numbers)
      .map(i -> i * i)
      .forEach(System.out::println);

这段代码中,使用Lambda表达式将每个数字平方后打印出来。其中,map 方法传入了一个Lambda表达式 i -> i * i,表示将每个元素乘以自己。forEach 方法传入了一个方法引用 System.out::println,表示将每个元素输出到控制台。

Lambda表达式的参数类型可以省略,因为Java编译器可以根据上下文推断出参数类型。如果 Lambda 表达式只有一个参数,而且其类型可以推断出来,那么连参数的小括号也可以省略。

Lambda表达式也可以有多个语句,需要用大括号将这些语句括起来,如下所示:

int[] numbers = {1, 2, 3, 4, 5};

Arrays.stream(numbers)
      .forEach(n -> {
          int square = n * n;
          System.out.println(square);
      });

这段代码中,Lambda表达式有多个语句,所以使用了大括号将这些语句括起来。其中,square 是一个临时变量,用来保存每个元素的平方。

除了能够作为参数传递给其他方法,Lambda表达式也可以赋值给一个变量,并且可以根据这个变量的类型进行类型推断。

IntFunction<String> convertIntToString = i -> Integer.toString(i);
String result = convertIntToString.apply(123);
System.out.println(result);

这段代码中,将Lambda表达式赋值给了一个 IntFunction 类型的变量 convertIntToString,然后使用这个变量将整数123转换成了字符串,并将结果输出到控制台。

总结来说,Java中的匿名函数(Lambda表达式)是一种可以直接定义在代码中的函数,没有函数名,可以直接传递给其他函数或方法使用。使用匿名函数可以简化代码,并使代码更加清晰和易于理解。通过使用Lambda表达式,可以将函数作为参数传递给其他方法,并在其他方法中进行使用。