2012-05-18 5 views
3

полный метод() в классе Calendar выполняет следующие операции:Полный метод() в java.util.Calendar

protected void complete() 

заливка в любых неустановленных полей в календаре поле. Во-первых, вызывается метод computeTime(), если значение времени (миллисекундное смещение с эпохи) не было рассчитано из значений поля календаря. Затем вызывается метод computeFields() для вычисления всех значений полей календаря .

полный метод() имеет следующий код:

protected void complete() 
    { 
     if (!isTimeSet) 
     updateTime(); 
     if (!areFieldsSet || !areAllFieldsSet) { 
      computeFields(); // fills in unset fields 
      areAllFieldsSet = areFieldsSet = true; 
     } 
    } 

Мой вопрос заключается в чем смысл этой круговой работы ?? Первые значения от

protected int[] fields 

используются для обновления значения

long time 

с использованием метода computeTime(). А затем клапан времени используется для обновления значений в полях с использованием computeFields(). Значение в время и Поле будет синхронизировано после вызова метода computeTime(), правильно? или я что-то упустил здесь?

Для тех, кто может спросить, почему это так важно, хорошо, потому что порядок, в котором время пересчитывается в календаре, часто меняет время, которое мы получаем из getTime() (или так я читал) !!

+0

'метод complete() имеет следующий код' - Остерегайтесь, что он зависит от реализации! – jFrenetic

ответ

1

Это не круговой.

Предположим, у вас есть объект Calendar с некоторыми, но не все, полями. Этот метод будет (а) вычислять и сохранять эпоху (long time) из полей, которые установлены, затем (b) установить все неустановленные поля в соответствии с только что вычисленной эпохой.

Итак, когда метод завершится, вы получите Calendar со всеми полями, заполненными и согласованными. Это другое, лучшее состояние объекта, с которого вы начали.

1

Квант очень прав. Просто добавьте еще немного, u не может напрямую вычислить значения отсутствующих полей из доступных полей, u должен пройти процесс вычисления значения времени, а затем заполнить отсутствующий полей из этого значения.

Смежные вопросы