Java之克隆

来源:互联网 发布:2016淘宝小号批量注册 编辑:程序博客网 时间:2024/06/05 11:20

JAVA克隆对象

一、克隆的含义:克隆一个对象,其属性会保持一样,但两个对象的引用并不相同。

二、克隆的实现:1)clone()方法,返回的是Object对象,需要强制转换;2)类必须实现Cloneable接口,并且重写Objet类的clone()方法.

三、代码实现

1.定义一个类并实现Cloneable接口

2.重写该类的equals方法

3.测试

package com.zyl.learn.common;/** * Created by zyl on 2015/8/2. */public class Person implements Cloneable {    private String name;    private String sex;    private int age;    public Person(String name, String sex, int age) {        this.name = name;        this.age = age;        this.sex = sex;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    @Override    public Object clone() {        try {            return super.clone();        } catch (CloneNotSupportedException e) {            e.printStackTrace();            return null;        }    }    @Override    public String toString() {        return "Person{" +                "name='" + name + '\'' +                ", sex='" + sex + '\'' +                ", age=" + age +                '}';    }    @Override    public boolean equals(Object o) {        if (this == o) return true;        if (o == null || getClass() != o.getClass()) return false;        Person person = (Person) o;        if (age != person.age) return false;        if (name != null ? !name.equals(person.name) : person.name != null) return false;        if (sex != null ? !sex.equals(person.sex) : person.sex != null) return false;        return true;    }    @Override    public int hashCode() {        int result = name != null ? name.hashCode() : 0;        result = 31 * result + (sex != null ? sex.hashCode() : 0);        result = 31 * result + age;        return result;    }}

3.测试代码

import com.zyl.learn.common.Person;public class clone {    public static void main(String[] args) {        Person person = new Person("xiao ming", "male", 21);        Person clonePerson = (Person) person.clone();        System.out.println("人和克隆人属性:" + person.equals(clonePerson));        System.out.println("人和克隆人:" + (person == clonePerson));    }}
4.输出:

人和克隆人属性:true
人和克隆人:false


四、总结

1.克隆类的实现方法

2.克隆对象的本质是独立新空间的复制品

1 0
原创粉丝点击