java 反射:从调用 class 传递一个值但不作为参数
java reflection: pass a value from the calling class but not as parameter
我用方法 'm' 写了一个 java class A,我通过从磁盘读取 A.class 并使用 [=12] 在我的程序中动态加载它=]到recreate
到class。然后我使用 m.invoke(instance of A)
从程序的 Main 函数中调用 A.class 中的 m。该方法不采用任何参数。我可以 "somehow" 调用 m 后从内部读取程序 Main 函数中定义的变量吗?
没有。不能通过反射访问局部变量。您可以通过设置环境变量或将值写入文件并在 m
内读取该文件来绕过此限制。在 Java 8 中,您可能还对 Lambda Expressions 感兴趣,它能够访问局部变量(尽管不能替代反射)。
我用方法 'm' 写了一个 java class A,我通过从磁盘读取 A.class 并使用 [=12] 在我的程序中动态加载它=]到recreate
到class。然后我使用 m.invoke(instance of A)
从程序的 Main 函数中调用 A.class 中的 m。该方法不采用任何参数。我可以 "somehow" 调用 m 后从内部读取程序 Main 函数中定义的变量吗?
没有。不能通过反射访问局部变量。您可以通过设置环境变量或将值写入文件并在 m
内读取该文件来绕过此限制。在 Java 8 中,您可能还对 Lambda Expressions 感兴趣,它能够访问局部变量(尽管不能替代反射)。