(1) 创建一个myString类,在其中包含了一个String对象,以便用在构造器中用构造器的参数对其进行初始化。添加一个toString()方法以及一个concatenate()方法,令其将一个String对象追加到我们的内部字符串。在myString中实现clone()。创建两个static方法,每个都取得一个myString x引用作为自己的参数,并调用x.concatenate("test")。但在第二个方法中,请首先调用clone()。测试这两个方法,观察它们不同的结果。

    (2) 创建一个名为Battery(电池)的类,在其中包含一个int,用它表示电池的编号(采用独一无二的标识符的形式)。接下来,创建一个名为Toy的类,其中包含了一个Battery数组以及一个toString,用于打印出所有电池。为Toy写一个clone()方法,令其自动关闭所有Battery对象。克隆Toy并打印出结果,完成对它的测试。

    (3) 修改CheckCloneable.java,使所有clone()方法都能捕获CloneNotSupportException异常,而不是把它直接传递给调用者。

    (4) 修改Compete.java,为Thing2Thing4类添加更多的成员对象,看看自己是否能判断计时随复杂性变化的规律——是一种简单的线性关系,还是看起来更加复杂。

    (5) 从Snake.java开始,创建Snake的一个深层复制版本。