Подтвердить что ты не робот

Самый быстрый способ клонирования GregorianCalendar?

Я пытаюсь сделать глубокую копию объекта, включая экземпляр GregorianCalendar. Я всегда опасаюсь использовать clone(), и он, похоже, не был переопределен здесь, поэтому я просто делаю поле для копирования по полю. В идеале, был бы конструктор копирования, который я мог бы использовать так:

GregorianCalendar newCalendar = new GregorianCalendar(oldCalendar);

К сожалению, я не могу найти такую ​​функциональность в API и не пытаюсь выяснить, какие поля мне нужны, чтобы получить точную копию. Итак, чтобы сделать копию одного из этих календарей, как бы вы это сделали? Я пропустил какой-то простой ярлык здесь?

4b9b3361

Ответ 1

java.util.Calendar имеет переопределенный clone(), который работает, поэтому используйте его. Кроме того, Calendar не имеет глубокой иерархии данных - его данные в основном int s.

Чтобы продлить ответ, вы можете вызвать SerializationUtils.clone(..) (из commons-lang) на любой объект, который делает глубокую копию, если целая иерархия данных реализует Serializable

Ответ 2

В частности, самая быстрая строка кода для копирования Календаря:

GregorianCalendar newCalendar = (Calendar)(oldCalendar.clone());

Ответ 3

Uh, clone() отстой.

Это так сложно? Я полагаю, вам нужно установить только 3 вещи, время, часовой пояс и локаль. Все эти поля имеют геттеры и сеттеры. Сделать метод полезности для возврата копии?