2013-09-18 5 views
1

Этот класс должен иметь метод clone(), чтобы его можно было сделать. Я попытался вставить его, но ему не хватает возврата? Что именно вы возвращаетесь в методе клонирования?Как дать классу метод клонирования? Что возвращается в методе клонирования?

Это класс я пытаюсь дать clone() метод:

package planets; 

public class Planet extends shape3D.Sphere { 
    String myPrimaryGas;  
    public void setPrimaryGas(String primaryGas){ 
     myPrimaryGas = primaryGas; 
    } 
    public String getPrimaryGas(){ 
     return myPrimaryGas; 
    } 
} 
+0

Где ваша попытка клонировать метод? – CPerkins

+0

Вы пытались это сделать? Там есть статья Википедии об этой теме :) http://en.wikipedia.org/wiki/Clone_(Java_method) – ibtarek

+0

Неглубокий или глубокий клон? делает клонирование поддержки 'shape3D.Sphere' (реализует Cloneable? – alfasin

ответ

1

Какого клон делает (в Java), по существу, создать второй объект типа планеты (в данном случае), а также копии все значения, чтобы у вас было два одинаковых объекта, новый и «это».

Так что ваш клон будет что-то вроде

public Planet clone(){ 
    Planet p = new Planet (myPrimaryGas); 
    return p; 
} 

или в вашем случае, кажется, что у вас есть не конструктор не определен, так что:

public Planet clone(){ 
    Planet p = new Planet(); 
    p.setPrimaryGas(myPrimaryGas); 
    return p; 
} 

Имейте в виду, вы хотите " глубокая копия "... что означает, что вам нужно вызвать clone для всех объектов внутри этого. Единственная причина, по которой я могу использовать «myPrimaryGas», а не «myPrimaryGas.clone()», состоит в том, что строки являются (почти) примитивным типом

+0

Часто для создания клонирующих работ используется частный конструктор, чтобы действительно прямо присваивать вещи. – Cruncher

+1

Кроме того, 'настоящая' причина, которую вам не нужно клонировать' String', состоит в том, что 'String' в java неизменяемы. – Cruncher

+0

Да, не будет никаких проблем с изменением объект из двух локаций. Для большинства целей Строки в java можно обрабатывать так, как если бы они были целыми числами – Chris

Смежные вопросы