MST

星途 面试题库

面试题:Java Lambda表达式在函数式接口中的基础应用

请举例说明如何定义一个函数式接口,并使用Java Lambda表达式来实现该接口的抽象方法。同时阐述一下Lambda表达式在此应用中的优势。
11.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 定义函数式接口: 函数式接口是只包含一个抽象方法的接口。例如,定义一个计算两个整数之和的函数式接口:
@FunctionalInterface
interface IntAdder {
    int add(int a, int b);
}

@FunctionalInterface注解用于表明该接口是函数式接口,虽然不是必需的,但加上可以让编译器进行更严格的检查。

  1. 使用Java Lambda表达式实现接口抽象方法
public class LambdaExample {
    public static void main(String[] args) {
        IntAdder adder = (a, b) -> a + b;
        int result = adder.add(3, 5);
        System.out.println("结果: " + result);
    }
}

这里通过(a, b) -> a + b的Lambda表达式实现了IntAdder接口的add方法。

  1. Lambda表达式在此应用中的优势
    • 简洁性:相比传统的匿名内部类实现方式,Lambda表达式代码更简洁。例如,使用匿名内部类实现IntAdder接口如下:
IntAdder adder = new IntAdder() {
    @Override
    public int add(int a, int b) {
        return a + b;
    }
};

可以看到,Lambda表达式避免了new关键字、类定义以及@Override注解等冗余代码。

  • 可读性:Lambda表达式更聚焦于实现的逻辑本身,直接表达了要执行的操作,使代码更易读,特别是在处理简单的函数式编程场景时。
  • 与函数式编程风格契合:Java 8引入Lambda表达式后,更好地支持了函数式编程范式,使代码在处理集合操作等场景时可以更流畅地使用函数式风格,如Stream API中大量使用Lambda表达式来进行数据处理。