類物件之間比較“大小”往往是很有用的操作,比如讓物件陣列排序時,就需要依賴比較操作。對於不同的類有不同的語義。如Student類,比較2個學生物件可以比較他們的score分數來評判。
Java不支援預算符過載,我們通過實現Comparable介面達到相同的目的。當類實現了Comparable介面,則認為這個類的物件之間是可比較的。
Comparable是java SDK中的一個內建的泛型介面。
原始碼:(很簡單,只有規定了一個介面方法)
public interface Comparable<T> { public int compareTo(T o);
//按照規定:如果 this 比 o 小,則返回一個負數,如果 this 比 o 大,則返回正數,否則返回0
}
例子
public class Test { public static void main(String[] args) { Student[] students = { new Student("bob", 90.0) , new Student("jack", 89.0),new Student("mary", 99.0)}; Arrays.sort(students); for(Student s:students) System.out.println(s); } } class Student implements Comparable<Student> { Student(String name,double score) { this.name = name; this.score = score; } private double score; private String name; @Override public int compareTo(Student o) { return Double.compare(this.score, o.score); //借用Double包裝類本身的compare方法 } @Override public String toString() { return String.format("name:%s score:%f", name,score); } }