静态方法是否缓存返回值



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

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

Java 方法,无论是否静态,除非你自己明确地缓存结果,否则从不缓存结果。特别是,如果该方法具有

Date date = new Date();

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

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