Comparable接口定义了compareTo方法,用于比较对象。
例如,在JavaAPI中,Integer、BigInteger、String以及Date类定义如下
Cloneable接口
Cloneable接口给出了一个可克隆的对象。
若要出现需要创建一个对象拷贝的情况。为了这个目的,需要使用clone方法
Cloneable定义如下:
直接调用clone()话,对象里面的基本类型数据会直接复制,但引用类型数据,是复制他的引用,这称为浅复制,不是深复制
package test; import java.util.Date; public class House implements Cloneable,Comparable{ private int id; private double area; private Date whenBuilt; public House(int id,double area) { // TODO Auto-generated constructor stub this.id = id; this.area = area; whenBuilt = new Date(); } public int getId() { return id; } public double getArea() { return area; } public Date getWhenBuilt() { return whenBuilt; } public Object clone() throws CloneNotSupportedException{ return super.clone(); } @Override public int compareTo(Object o) { // TODO Auto-generated method stub if(area > ((House)o).area) { return 1; }else if(area < ((House)o).area) { return -1; }else { return 0; } } public static void main(String [] args) throws CloneNotSupportedException { House house1 = new House(1, 1750.50); House house2 = (House) house1.clone(); } }
这个例子就是直接调用clone() 所以whenbuilt 地址是一样的,内容也一样
若把clone()改为这样
whenBuilt 地址就不一样了 ,内容一样