接口类

  • 可以用instanceof检查一个对象是否实现了某个特定接口
    anObject instanceof Comparable
  • 接口中不能包含实例域或者静态方法,但是可以包含常量,没有被实现的方法。接口中的方法自动被设置为public,域自动被设为public static final
  • java.lang.Comparable<T>
    java.lang.CompareTo(T other)
    用这个对象与other进行比较。如果这个对象小于other则返回负值;否则返回正值。
class Employee implements Comparable<Employee>
{
public int compareTo(Employee other){
return Double.compare(salary,other.salary);
}
}
  • java.util.Arrays
    static void sort(Object[] a)
    使用mergesort算法对数组a中的元素进行排序。要求数组中的元素必须属于实现了Comparable中的类,并且元素之间必须是可比较的。
  • java.lang.Integer
    static int compare(int x, int y)
    如果x<y返回一个负整数;如果x=y返回0;否则返回一个正整数。

对象克隆

Cloneable接口的出现与接口的正常使用没有任何关系。接口在这里只是作为一个标记,表明类的设计者知道要进行克隆处理。如果一个对象需要克隆,而没有实现Cloneable接口,就会产生一个已检测异常。
即使clone的默认实现(浅拷贝)能够满足需求,也应该实现Cloneable接口,将clone重定义为public,并调用super.clone()。

class Employee implements Cloneable
{
//raise visibility level to public,change return type
public Employee clone() throws CloneableSupportedException
{
return (Employee) super.clone();
}
}

为了实现深拷贝,必须克隆所有可变的实例域。

class Employee implements Cloneable{
public Employee clone() throws CloneNotSupportedException{
//call Object.clone()
Employee cloned = (Employee) super.clone();
//clone mutable fields
cloned.hireDay = (Date) hireDay.clone();
return cloned;
}
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容