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

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中匿名函数的用法及示例。通过使用匿名函数,我们可以使代码更加简洁、灵活,提高代码的可读性和维护性,同时也可以结合函数式接口实现更加充分的功能。