Object中的clone方法
1、作用:赋值一个属性值一样的新对象
2、使用:
需要被克隆的对象实现Cloneable
重写clone方法
public class Person implements Cloneable {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name
}
public String setName(String name) {
this.name = name
}
public String getAge() {
return this.age
}
public String setName(int age) {
this.age = age
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\" +
", age=" + age +
'}';
}
@Override
public boolean equal(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false
Person person = (Person) o;
return age = person.age && Objects.equals(name, person.name);
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
implements Cloneable需要被克隆的对象实现Cloneable
第二步就是去重写克隆方法。
super.clone() 指向的是对象的clone,直接记住怎么用就可以了,它是克隆一个属性值一样的新对象。
新建Test03.java类文件:
public class Test03 {
public static void main(String[] args) throws CloneNotSupportedException {
Person p2 = new Person("涛哥", 16);
Object o = p2.clone();
Person p3 = (Person) o; // 克隆了一个新对象
System.out.println(p2==p3); // 比较地址值
System.out.println(p2.equals(p3)); // true 克隆的是值,不是地址值
}
}