接口类

作者: 很很狠的狠角色 | 来源:发表于2017-11-25 21:09 被阅读0次
  • 可以用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;
}
}

相关文章

网友评论

      本文标题:接口类

      本文链接:https://www.haomeiwen.com/subject/bpfgmxtx.html