首页 > 解决方案 > 从作为参数提供给构造函数的 lambda 调用实例方法

问题描述

我有一堂课FooTryFoo

import java.util.function.Consumer;

public class Foo {

  Consumer<Integer> c;

  public Foo(Consumer<Integer> e) {
       this.c = c;
  }

  void bar(){}

}


class TryFoo{

   public static void main(String... args){

      Foo e = new Foo((someInt)-> /*how do i reference bar?*/ );

   } 
}

如何Foo#bar()从 lambda 调用方法?我尝试使用this.bar()Foo.this.bar()但无济于事。setter 是另一种方式,但最好使用构造函数。

编辑1:Foo#bar不是静态的。

标签: javalambdaconstructor

解决方案


你不能不做bar静态:

  static void bar() {}

并调用它:

  Foo e = new Foo((someInt)-> Foo.bar());

否则,如果没有实例对象来调用它,就无法调用实例方法。


推荐阅读