Java Cloneable или конструктор копирования, зачем мне использовать какой-либо из них? Что на самом деле делает любая из этих стратегий?
Вопрос, который у меня возник, довольно нубийский, поэтому, пожалуйста, извините меня за мое невежество, так как я нуб.
Я наткнулся на код, написанный некоторыми консультантами в компании, в которой я работаю. Когда я попытался углубиться в код, я не знал, почему класс реализует некоторый интерфейс, называемый 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);
}
...
}
1 ответ
Он используется в ситуациях, когда вы передаете объект какой-либо другой стороне. Если объект изменчив, и вы не хотите рисковать тем, что другая сторона изменит ваш объект, вы можете предоставить ему просто клон или копию вашего объекта вместо оригинала.