我有一个返回java.util.Date
的静态方法。当我第一次打电话时,它会返回正确的日期。但是,当我说2分钟后我再次打电话时,它仍然会返回第一个日期。日期始终在方法Date date = new Date();
中创建,并且不存储在其外部。
我的静态方法是一个相当复杂的Android类系统的一部分,所以错误很可能在其他地方。我只是想知道静态方法是否有可能缓存其返回值。
答案 0 :(得分:2)
Java方法,无论是否静态,都不会缓存结果,除非您自己明确地执行此操作。特别是,如果方法有
Date date = new Date();
然后在date
上生成一些计算,它将根据方法调用时的new Date()
返回结果。
返回值保持不变的最可能原因是该方法不会第二次被调用,例如,因为导致调用的代码路径决定它具有有效值。您可以通过向静态方法添加日志语句来诊断这一点,并查看当您的代码应该在第二次或第三次调用时会发生什么。