java Comparable 和 Cloneable接口

Posted chenzquan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 地址就不一样了 ,内容一样

 

以上是关于java Comparable 和 Cloneable接口的主要内容,如果未能解决你的问题,请参考以下文章

java Comparable 和 Comparator接口区别

Java:Comparable和Comparator区别

Java中Comparable和Comparator接口区别分析

Java中Comparable和Comparator

Java中的comparable接口和Comparator接口的区别

转载Java中Comparable和Comparator比较