У меня есть статический метод, который возвращает java.util.Date
. Когда я впервые назову его, он вернет правильную дату. Однако, когда я назову его снова, скажем, 2 минуты, он все равно возвращает первое свидание. Дата всегда создается в методе Date date = new Date();
и не хранится за его пределами.
Мой статический метод является частью довольно сложной системы классов Android, поэтому существует высокая вероятность того, что ошибка находится где-то в другом месте. Я просто хочу знать, возможно ли, что статический метод кэширует возвращаемые значения.
Java-методы, статические или нет, никогда не кэшируют результаты, если вы явно не сделаете это самостоятельно. В частности, если метод имеет
Date date = new Date();
а затем производит некоторые вычисления в date
, он вернет результат на основе new Date()
с момента вызова метода.
Наиболее вероятной причиной того, что возвращаемое значение остается неизменным, является то, что метод не вызывается во второй раз, например, потому что путь кода, ведущий к вызову, решает, что он имеет допустимое значение. Вы можете диагностировать это, добавив оператор журнала к статическому методу и посмотрите, что произойдет, когда ваш код должен вызывать его второй или третий раз.
Date
) или возвращаете объектDate
созданный из одних и тех же значений каждый раз. Размещение вашего кода будет хорошим способом определить это.