java反射:从调用类传递值,但不作为参数传递

java反射:从调用类传递值,但不作为参数传递,java,reflection,Java,Reflection,我已经用方法“m”编写了一个java类,通过从磁盘读取a.class并使用defineclass重新创建该类,我正在程序中动态加载该方法。然后我使用m.invoke(A的实例)从程序的主函数调用A.class中的m。该方法不接受任何参数。一旦调用了程序的主函数中定义的变量,我能否“以某种方式”从m内部读取该变量?否。局部变量无法通过反射访问。您可以通过设置环境变量或将值写入文件并在m中读取该文件来绕过此限制。在Java 8中,您可能还对能够访问局部变量(尽管不是反射的替代)的函数感兴趣。您只能通

我已经用方法“m”编写了一个java类,通过从磁盘读取a.class并使用
defineclass
重新创建
该类,我正在程序中动态加载该方法。然后我使用
m.invoke(A的实例)
从程序的主函数调用A.class中的m。该方法不接受任何参数。一旦调用了程序的主函数中定义的变量,我能否“以某种方式”从m内部读取该变量?

否。局部变量无法通过反射访问。您可以通过设置环境变量或将值写入文件并在
m
中读取该文件来绕过此限制。在Java 8中,您可能还对能够访问局部变量(尽管不是反射的替代)的函数感兴趣。

您只能通过传递值来更改局部变量,并且只能通过方法返回来获取局部变量。Lambda函数只能获取Java中局部变量的副本。在JVM中,它们与任何其他类一样,必须将所有值传递给它们。