- PR -

Comparableインターフェースについてご質問

1
投稿者投稿内容
tahakoda
ベテラン
会議室デビュー日: 2002/08/17
投稿数: 79
投稿日時: 2004-12-07 13:18
以下の2つのクラスがあるとします。

public class Employee implements Comparable{

private String employeeId;
private String employeeName;

public Employee(String employeeId,String employeeName) {
this.employeeId = employeeId;
this.employeeName = employeeName;
}

public int compareTo(Object target){
return employeeId.compareTo(((Employee)target).employeeId);
}

public String getEmployeeId() {
return employeeId;
}
public String getEmployeeName() {
return employeeName;
}
}
-----------------------------------------------
public class Exam02 {
public static void main(String args[]){
Employee[] empArray = {
new Employee("02","AAA"),
new Employee("01","BBB"),
new Employee("03","CCC")};

Arrays.sort(empArray);

for(int i = 0 ; i < empArray.length ; i++){
Employee emp = empArray[i];
System.out.println(emp.getEmployeeId() + ":"+ emp.getEmployeeName());
}
}
}
-----------------------------------------------ここまで

「Arrays.sort(empArray);」でオブジェクトがソートされる
ようですが「compareToメソッド」が明示的に呼ばれていないのに
何故ソートされるのか理屈が良くわかりません。。

大変初歩的で恐縮ですがご教授頂ければ幸いです。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2004-12-07 15:09
tahakodaさんが書いたコードの中で呼んでいなくとも、
sort()メソッドの中ではcompareTo()メソッドが呼ばれています。
Arrays.sort(Object[])のソースをご覧下さい。
1

スキルアップ/キャリアアップ(JOB@IT)