给定一个java.lang.reflect.Method
对象,无论如何都要确定该方法是否是纯粹的功能(即,给定相同的输入,它将始终产生相同的输出并且它是无状态的。换句话说,该函数确实不依赖于它的环境)?
答案 0 :(得分:9)
不,没有办法做到。
反射不允许您检查方法背后的实际代码。
即使在可能的情况下,实际分析可能会......至少可以说是棘手的。
答案 1 :(得分:7)
没有办法用反射或任何其他机制来做到这一点。
开发人员知道该方法是否有效。例如,Spring有一个@Cacheable
注释,它向应用程序提供该方法功能的提示,因此可以缓存给定参数集的结果。 (Spring会将您的对象包装在提供缓存行为的代理中。)
答案 2 :(得分:0)
无论如何都要确定该方法是否纯粹是功能性的(即,给定相同的输入,它将始终产生相同的输出
我知道现在你已经要求了,但单元测试可能可以帮助你。
答案 3 :(得分:0)
没有。反射无法读取方法的字节代码。所以你无法真正告诉方法做什么,甚至不知道它使用的其他类。
答案 4 :(得分:0)
反思对你没有帮助。如果确实希望在运行时定义它,您可以尝试使用javap -c classname.class
。但最好避免这样的黑客行为。