2010-03-05 74 views
3

我沒有看到任何東西,我做錯了,但NetBeans的給了我以下錯誤:Java的可比接口compareTo方法

incomparable types 
required: boolean 
found: java.lang.Object 


public int compareTo(Object obj) { 
    if(obj instaceof Employee){ 
     Employee employee = (Employee) obj; 
     if(this.weekly_earnings > employee.weekly_earnings) 
      return 1; 
     else if(this.weekly_earnings == employee.weekly_earnings) 
      return 0; 
     else 
      return -1; 
    } 
    else{ 
     System.out.println("Error"); 
    } 
} 
+3

instaceof不存在 – 2010-03-05 00:26:38

+2

它不返回任何錯誤情況(應拋出'ClassCastException',實際上應該使用泛型)。 – 2010-03-05 00:29:10

+1

我還想補充一點,如果您剛剛返回(this.weekly_earnings - employee.weekly_earnings),那麼可能會更好,保存所有if語句。 – DaveJohnston 2010-03-05 00:32:27

回答

6

它的拼寫instanceof。另外,正如Tom Hawtin在評論中提到的那樣,如果您使用的是Java 1.5或更高版本,則可以編寫compareTo(Employee emp)以避免使用instanceof。關於編寫Object Ordering Java教程中的Comparable類型有一個全面的部分。

+0

這不會給出語法錯誤嗎? 嘗試一個乾淨的構建或重新啓動netbeans。 – Pindatjuh 2010-03-05 00:28:18

+0

@Pindatjuh:它給出的語法錯誤「無與倫比的類型...」 – 2010-03-05 00:33:20

+0

你是對的。我不能相信我犯了這個錯誤 – user69514 2010-03-05 00:38:17