Вопрос, который у меня есть, довольно нуб, так что, пожалуйста, извините меня за мое невежество, поскольку я ноб.Java Clonable или copy constructor, почему я должен использовать любой из них? Что делает одна из этих стратегий на самом деле?
Я столкнулся с кодом, который некоторые консультанты писали в компании, в которой я работаю. Когда я попытался вникать в код, я понятия не имел, почему класс реализует некоторый интерфейс, называемый clonable. Поэтому я попытался использовать этот клонируемый беспорядок, и все, что я вижу, это такие вещи, как «не использовать» или «вместо этого использовать конструктор копирования». Я не знаю, что это такое. Может ли кто-то продумать причины того, когда этот тип клонирования действительно необходим? Почему я должен клонировать объект?
Я говорил с бывшим консультантом, и он упомянул об этом, что позволило бы нам, по-видимому, цеплять методы. Как questionSet.dosomething().doAnotherThing().dowth();
public class QuestionSet implements Cloneable {
...
/* (non-Javadoc)
* @see java.lang.Object#clone()
*/
@Override
public QuestionSet clone() {
return new QuestionSet(this);
}
...
}
Я думаю, вы неправильно поняли, что сказал экс-консультант, или именно по этой причине он является бывшим консультантом. –
Я никогда не использовал ни один из них (кроме экспериментов), в 17 лет Java. – EJP
Основная причина, по которой 'clone()' существует в 'Object' _at all_, относится к массивам: вы можете клонировать массив, чтобы сделать мелкую копию. (Точная взаимосвязь между массивами и нормальной иерархией классов является одной из вещей, которые были не такими гладкими, как должно было быть на Java ...) –