1. 程式人生 > >java Comparable 和 Cloneable接口

java Comparable 和 Cloneable接口

基本類型 object c png return todo 分享 con mage util

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

java Comparable 和 Cloneable接口