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;
    }
}
4

1 回答 1

1

您的克隆所做的(在 java 中)本质上是创建第二个对象,类型为 Planet(在本例中),并复制所有值,以便您拥有两个相同的对象,即新对象和“this”。

所以你的克隆就像

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()”的唯一原因是因为字符串(几乎)是一种原始类型

于 2013-09-18T19:31:35.070 回答