Java中匿名函数的用法及示例
发布时间:2023-07-01 13:48:46
在Java中,匿名函数也称为匿名类或者Lambda表达式,是一种可以在程序中直接创建和使用的简洁的函数。它可以替代较为繁琐的创建类和定义方法的过程,提高代码的可读性和简洁性。
匿名函数的使用
在Java中,匿名函数主要有两种用法:作为方法参数传递和作为函数式接口的实例。
1. 作为方法参数传递
匿名函数可以作为方法的参数传递,这样可以将代码作为参数传入方法中,增强方法的灵活性。
示例1:匿名函数作为方法参数参与运算
public class Example {
public static void main(String[] args) {
int result = calculate(5, 3, new Calculator() {
@Override
public int operation(int a, int b) {
return a + b;
}
});
System.out.println("结果是:" + result);
}
public static int calculate(int a, int b, Calculator calculator) {
return calculator.operation(a, b);
}
interface Calculator {
int operation(int a, int b);
}
}
示例2:使用Lambda表达式替代匿名函数
public class Example {
public static void main(String[] args) {
int result = calculate(5, 3, (a, b) -> a + b);
System.out.println("结果是:" + result);
}
public static int calculate(int a, int b, Calculator calculator) {
return calculator.operation(a, b);
}
interface Calculator {
int operation(int a, int b);
}
}
2. 作为函数式接口的实例
函数式接口是只包含一个抽象方法的接口,匿名函数可以作为函数式接口的实例。
示例3:匿名函数作为函数式接口的实例
public class Example {
public static void main(String[] args) {
HelloWorld helloWorld = () -> "Hello, World!";
System.out.println(helloWorld.sayHello());
}
interface HelloWorld {
String sayHello();
}
}
示例4:使用内置的函数式接口Predicate
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
public class Example {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenNumbers = filter(numbers, number -> number % 2 == 0);
System.out.println("偶数:" + evenNumbers);
}
public static List<Integer> filter(List<Integer> numbers, Predicate<Integer> predicate) {
List<Integer> result = new ArrayList<>();
for (Integer number : numbers) {
if (predicate.test(number)) {
result.add(number);
}
}
return result;
}
}
以上是Java中匿名函数的用法及示例。通过使用匿名函数,我们可以使代码更加简洁、灵活,提高代码的可读性和维护性,同时也可以结合函数式接口实现更加充分的功能。
