2、撰写一个 myString class,其中包含一个String对象,可于构造函数中通过引数来设定初值。加入toString()和concatenate()。后者会将String对象附加于你的内部字符串尾端。请为myString()实现clone()。撰写两个static函数,令它们都接收myString referencex引数并调用x.concatenate(“test”)。但第二个函数会先调用clone()。请测试这两个函数并展示其不同结果。请问这题该怎么做呢,麻烦高手来解决下,非常感谢

解决方案 »

  1.   

    public class MyString implements Cloneable
    {    String sourceString;
        
        //带参数的构造函数
        public MyString(String str)
        {
            //在构造函数中通过引用数来设定初值
            this.sourceString = str;
        }
        
        /**
         * 重写toString方法
         */
        public String toString()
        {
            StringBuilder sb = new StringBuilder();
            sb.append(sourceString);
            sb.append(":");
            return sb.toString();
        }
        /**
         * 实现讲传入参数连接到你的字符串尾端
         * 
         * @param str
         *            传入参数
         * @return 链接好的字符串
         */
        public String concatenate(String str)
        {
            return sourceString.concat(str);
        }
        
        /**
         * 克隆实现
         */
        public Object clone() throws CloneNotSupportedException
        {
            return super.clone();
        }
        /**
         * 克隆前
         */
        public static void cloneBegin(String str)
        {
            MyString testString = new MyString(" Clone begin ");
            String result = testString.concatenate(str);
            System.out.println(testString.toString() + result);
        }
        /**
         * 克隆后
         */
        public static void cloneAfter(String str) throws CloneNotSupportedException
        {
            MyString testString = new MyString(" Clone begin ");
            MyString testStringClone = (MyString)testString.clone(); 
            String result = testStringClone.concatenate(str);
            System.out.println(testStringClone.toString()+result);
        }
        /**
         * @param args
         */
        public static void main(String[] args)
        {
            cloneBegin("test");
            try
            {
                cloneAfter("testClone");
            } catch (CloneNotSupportedException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }}楼主 看看 是否符合要求的……