静态方法缓存返回值吗?

时间:2014-11-28 16:02:15

标签: java

我有一个返回java.util.Date的静态方法。当我第一次打电话时,它会返回正确的日期。但是,当我说2分钟后我再次打电话时,它仍然会返回第一个日期。日期始终在方法Date date = new Date();中创建,并且不存储在其外部。

我的静态方法是一个相当复杂的Android类系统的一部分,所以错误很可能在其他地方。我只是想知道静态方法是否有可能缓存其返回值。

1 个答案:

答案 0 :(得分:2)

Java方法,无论是否静态,都不会缓存结果,除非您自己明确地执行此操作。特别是,如果方法有

Date date = new Date();

然后在date上生成一些计算,它将根据方法调用时的new Date()返回结果。

返回值保持不变的最可能原因是该方法不会第二次被调用,例如,因为导致调用的代码路径决定它具有有效值。您可以通过向静态方法添加日志语句来诊断这一点,并查看当您的代码应该在第二次或第三次调用时会发生什么。