日期:2014-05-20  浏览次数:20691 次

请教大家一道java题目?
撰写一个 myString class,其中包含一个String对象,可于构造函数中通过引数来设定初值。加入toString()和concatenate()。后者会将String对象附加于你的内部字符串尾端。请为myString()实现clone()。撰写两个static函数,令它们都接收myString referencex引数并调用x.concatenate(“test”)。但第二个函数会先调用clone()。请测试这两个函数并展示其不同结果。


我对"撰写两个static函数,令它们都接收myString referencex引数并调用x.concatenate(“test”)。但第二个函数会先调用clone()。"这句不明白,大家能否写下代码让看参考下? 谢谢!

------解决方案--------------------

public class MyString implements Cloneable{

private String MyString_str;

public MyString(String str){
this.MyString_str = str;
}

public String concatenate(String str){
this.MyString_str +=str;
return this.MyString_str;
}

public String toString(){
return this.MyString_str;
}

public Object clone() throws CloneNotSupportedException{
return super.clone();

}

public static void Method1(MyString MyStr){
System.out.println(MyStr.concatenate("test"));
}

public static void Method2(MyString MyStr){
try {

System.out.println(((MyString) MyStr.clone()).concatenate("test"));
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
----------
import junit.framework.TestCase;


public class MyStringTest extends TestCase {

private MyString m = new MyString(" hello");
protected void setUp() throws Exception {
super.setUp();
}

protected void tearDown() throws Exception {
super.tearDown();
}

public void testMethod() {
MyString.Method1(m);
MyString.Method2(m);
}

}
-----------
RESULT:
 hellotest
 hellotesttest