在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"?