java的三个接口Comparable,Comparator,Cloneable(浅拷贝与深拷贝)
compareTo(Object o)
:比较当前对象与指定对象的大小,返回一个整数。
compare(T o1, T o2)
:比较两个对象的大小,返回一个整数。clone()
:返回一个对象的副本。Cloneable接口一般实现的是浅拷贝。 如果你需要实现深拷贝,则需要手动编写代码来递归地复制对象中的所有引用类型变量。
class Person implements Comparable<Person> {
private String name;
private int age;
// ... 构造方法和getter/setter
@Override
public int compareTo(Person o) {
return this.age - o.age; // 按年龄升序排序
}
}
class AgeComparator implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return o2.age - o1.age; // 按年龄降序排序
}
}
class Student extends Person implements Cloneable {
// ...
@Override
public Object clone() throws CloneNotSupportedException {
// 浅拷贝
return super.clone();
}
// 深拷贝示例
public Student deepClone() {
Student clone = (Student) super.clone();
// 复制引用类型变量,实现深拷贝
clone.setName(new String(this.name));
// ... 复制其他引用类型变量
return clone;
}
}
希望这份解答能帮助你更好地理解Java中的Comparable、Comparator和Cloneable接口。
想深入了解哪个方面呢? 比如:
请随时提出你的问题!