легче объяснить в коде, поэтому здесь
Object anObj;
anObj = new MyObj();
anObj = new Rectangle();
anObj.clone();//this doesnt exist because its on the root Object class
что я могу использовать вместо метода Object.clone () в этом примере?
----------------------- дополнительная информация ---------------------- --------
Я добавил дополнительную информацию, но она, кажется, прошла посередине всех ответов, поэтому здесь снова, чтобы ее можно было прочитать.
Привет, все это очень полезно на тему клонирования или копирования, о которой мне сейчас нужно подумать. но они не помогают с первоначальным вопросом. Может быть, больше информации от меня поможет вам понять, что я после.
Я переопределяю клон для каждого из моих объектов и добавляю все остальные методы клонирования и копирования, необходимые для полного клонирования объекта, включая добавление пользовательского метода для копирования буферизованного изображения.
т.е.: -
public Object clone() {//i copied from 'thelost's answer
try {
CloningExample copy = (CloningExample)super.clone();
copy.names = (LinkedList)names.clone();
return copy;
} catch (CloneNotSupportedException e) {
return null;
}
}
но у меня есть одна переменная в моем классе, которая является Object, но, поскольку она содержит различные другие объекты разных типов, у каждого из моих типов будет метод clone, но не нужно проверять, является ли он каждым из моих типов, а затем вызывать clone () для моего типа, который будет очень длинным, так как у меня много типов, я не могу понять, как легко скопировать или клонировать объект. Есть ли способ OS я должен просто написать статический метод, как это?
static findTypeAndCopy(Object thisobj){
if(thisobj==null)
return null;
if(thisobj instanceOf MyObj1){
return ((MyObj1)thisobj).clone();
}else if(thisobj instanceOf MyObj2){
return ((MyObj2)thisobj).clone();
...
etc
}
???