2014-09-11 4 views
0

Я работаю над некоторым кодом и пытаюсь выяснить, как копировать ссылку на объект на другой объект. Я продолжаю видеть метод clone(), но я читал, что он испорчен, и класс, который я хочу скопировать, уже реализует сериализуемый. Итак, у меня есть один вопрос о различии между использованием «=» и методом клонирования. Мое понимание состоит в том, что обе они являются мелкой копией, поэтому они должны работать одинаково, но если это правда, то в чем преимущество метода для этого?Использование '=' versus clone() в Java

Код, в котором я работаю, имеет 2 массива объектов - объект того же типа, все объекты в обоих массивах изначально равны нулю, и я присваиваю значения массива B равному массиву A. В качестве кода прогрессирует объекты в массиве A, а значения присваиваются переменным объектов в массиве A. В конце кода все объекты в массиве B по-прежнему равны нулю.

Есть ли у меня концепция здесь неправильно? Если концепция не так, я предполагаю, что это просто то, что я пропускаю в своем коде.

Любая помощь приветствуется.

+1

Ваш вопрос заключается в сравнении яблок с апельсинами, они настолько совершенно разные, что их нельзя сравнивать. '=' присваивает ссылку, вот и все. Clone создает совершенно новый объект, состояние которого должно быть таким же, как клонированный объект, но опять же эти две вещи очень разные. –

+1

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

ответ

1

Когда вы используете =, вы копируете ссылку объекта (в память). При использовании .clone() вы создаете новый объект.

+0

Простой и правильный. – Christian

3

Я сделаю свой комментарий ответ:

Ваш вопрос сравнивать яблоки с апельсинами, они настолько разные, что они не могут быть сравнены. = присваивает ссылку, вот и все. Clone создает полностью новый объект, один из которых состояние должен быть таким же, как клонированный объект, но опять же это совершенно другой объект/ссылка. В стороне есть глубокие и мелкие клоны, и поэтому составные поля мелких скопированных клонов могут быть одинаковыми, но это вопрос другого вопроса.

+0

Спасибо за вход, вот что я не понял. –