相关疑难解决方法(0)

Java 8 - 如何访问被绑定为lambda的对象和方法

在Java中,您可以"捕获"对象的"方法调用"作为Runnable,如下例所示.

之后,有权访问Runnable的这个实例,是否可以实际访问"捕获"对象和被调用方法的方法参数(如果可能,这可能需要通过反射来完成).

例如:

class SomePrintingClass {
  public void print(String myText) {
    System.out.println(myText);

  }
}


public class HowToAccess {
  public static void main(String[] args) throws Exception {
    final String myText = "How to access this?";

    final SomePrintingClass printer = new SomePrintingClass();

    Runnable r = () -> printer.print(myText); // capture as Runnable

    inspect(r);
  }


  private static void inspect(Runnable runnable) {
    // I have reference only to runnable... can I access "printer" here

  }


}
Run Code Online (Sandbox Code Playgroud)

是否可以在"inspect"方法中访问(可能通过反射)"printer"对象和作为参数传递的"myText"?

java reflection lambda java-8

6
推荐指数
1
解决办法
913
查看次数

标签 统计

java ×1

java-8 ×1

lambda ×1

reflection ×1