今天在寫一個類型時,需要覆寫compare方法,源代碼如下:

1
2
3
4
5
6
public int compare(Object arg0, Object arg1){
	Student stu0 = (Student)arg0;
	Student stu1 = (Student)arg1;
	int flag = stu0.TotalScore.compareTo(stu1.TotalScore);
	return flag;
}

編譯的時候,出現了”無法取消引用”的錯誤,經檢查,發現原來是一個低級的錯誤,compareTo的方式是對象的方法,而我直接用的是基本數據類型(即代碼中的TotalScore,定義為double類型),將其封裝到對象中即可解決問題。

1
2
3
4
5
6
public int compare(Object arg0, Object arg1){
	Student stu0 = (Student)arg0;
	Student stu1 = (Student)arg1;
	int flag = (Double.valueOf(stu0.getTotalScore())).compareTo(Double.valueOf(stu1.getTotalScore()));
	return flag;
}