vendredi 17 février 2017

Java 8 - how to access object and method encapuslated as lambda

In Java you can "capture" a "method call on object" as a Runnable, as in belows example.

Later, having access to this instance of Runnable, is it possible to actually access the "captured" object and the method parameters of a method which is called (if possible this probably needs to be done via reflection).

For example:

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

  }


}

Is it possible in the "inspect" method to access (probably via reflection) "printer" object and "myText" which was passed as a parameter?





Aucun commentaire:

Enregistrer un commentaire