java Comparable 和 Cloneable接口

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 地址就不一样了 ,内容一样

 

posted @ 2018-07-20 00:42  chenzquan  阅读(1030)  评论(0编辑  收藏  举报