Student a=new Student("xiao");
String b=new Student;
b=a;上面的b是指向了a其实和a是属于同一个内存的引用现在想生成一个b b的内容等于a  但是b是另外的一个内存的引用 
也就是说与a只有内存上相同的关系好象有个.clone()但是尝试下连编译都过不去!指点下

解决方案 »

  1.   

    克隆
    object.clone(),可以把object理解为一个指针,指向一块存储空间,clone()是把
    这个空间里的东西都copy一份,放到另一个地方去,
    于是引出了影子克隆和**(忘了另一个叫什么了,大概是深层克隆吧)
    由于object是个指针,加入object.clone()这个object有个属性是object_sun, 
    object.clone()的调用只是把object_sun 另存了,而不是把这个 object_sun 的内容另存了,所以object通过object.clone()  克隆出来的对象的 object_sun 属性和object的object_sun 属性指到同一个位置,改变一个,另一个也会变,
    public class CloneTest 
    {
        public static void main(String[] args) 
        {
    Employee emp = new Employee("kevin");
    emp.address = new Address("Beijing");
    System.out.println("name: " + emp.name + " age: " + emp.age + " Address: " + emp.address.city);

    Employee empClone = (Employee) emp.clone();
    empClone.age = 50;
    empClone.name = "ding";
    empClone.address.city = "Shanghai";
    System.out.println("name: " + empClone.name + 
        " age: " + empClone.age
        +" Address: " + emp.address.city);

    System.out.println("name: " + emp.name + " age: " + emp.age + " Address: " + emp.address.city);
    }
    }class Employee implements Cloneable
    {
        String name;
        int    age;
        Address address;
        
        public Employee(String name)
        {
    this.name = name;
    this.age = 30;
        }
        
        public Object clone()
        {
    try
    {
         return  super.clone();
    }
    catch(Exception e)
    {
         e.printStackTrace();
         }
    return null;
        }
    }class Address
    {
          String city;
          public Address(String city)
          {
    this.city = city; 
          }
    }
    这段代码很好的说明了克隆的机制
        
    name: kevin age: 30 Address: Beijing
    name: ding age: 50 Address: Shanghai
    name: kevin age: 30 Address: Shanghai楼主你好好看看上面的代码,就没问题了
      

  2.   

    楼主只要写的类实现了implements Cloneable接口,然后重灾clone()方法就可以复制了。
    还要注意,如果你所要复制的类中含有其他的对象,在clone对象中也需要克隆这个对象。
      

  3.   

    1、你的Student类要implements Cloneable接口
    2、你的Student类要重载clone()方法,如果你的Student类中包含有非基本数据类型的对象成员,还需要在重载clone()的方法里面对这些成员进行深度克隆(也就是成员对象.clone())