确定静态方法是否纯粹是功能性的

时间:2013-12-12 15:28:52

标签: java reflection purely-functional

给定一个java.lang.reflect.Method对象,无论如何都要确定该方法是否是纯粹的功能(即,给定相同的输入,它将始终产生相同的输出并且它是无状态的。换句话说,该函数确实不依赖于它的环境)?

5 个答案:

答案 0 :(得分:9)

不,没有办法做到。

反射不允许您检查方法背后的实际代码。

即使在可能的情况下,实际分析可能会......至少可以说是棘手的。

答案 1 :(得分:7)

没有办法用反射或任何其他机制来做到这一点。

开发人员知道该方法是否有效。例如,Spring有一个@Cacheable注释,它向应用程序提供该方法功能的提示,因此可以缓存给定参数集的结果。 (Spring会将您的对象包装在提供缓存行为的代理中。)

答案 2 :(得分:0)

  

无论如何都要确定该方法是否纯粹是功能性的(即,给定相同的输入,它将始终产生相同的输出

我知道现在你已经要求了,但单元测试可能可以帮助你。

答案 3 :(得分:0)

没有。反射无法读取方法的字节代码。所以你无法真正告诉方法做什么,甚至不知道它使用的其他类。

答案 4 :(得分:0)

反思对你没有帮助。如果确实希望在运行时定义它,您可以尝试使用javap -c classname.class。但最好避免这样的黑客行为。