首页 > 解决方案 > Lambda 表达式只能在 (Java) 中定义的相同方法中使用吗?

问题描述

我看到了在下一行定义和使用 Lambda 表达式的所有示例。因此,在我看到的每个示例中,Lambda 的定义方法与其使用的方法相同。这仅仅是由于示例还是没有实际的方法可以将这两者分开?换句话说,是否可以调用在不同方法甚至不同类中定义的 Lambda 函数?

标签: javalambda

解决方案


lambda 表达式定义的类型理论上可以在任何地方使用,所以我相信你的问题源于你只看到了有限的例子。

我研究过几个代码库,其中方法返回由 lambda 表达式指定的功能接口的实现。我可以举一个简单的例子:

public class A {
  public static Predicate<String> startsWithA() {
    return input -> input.startsWith("A");
  }
}

public class B {
  public static void main(String[] args) {
    System.out.println(A.startsWithA().test("Aardvark"));
  }
}

推荐阅读