2013-07-28 99 views
0

有人可以請向我解釋下面的代碼是做什麼的。我是編程新手。我很難理解「當前對象」的含義。 此代碼包含在實現Compareable接口的類中。它有一個採樣器,它接受一個整數和字符串描述。它也有數字和描述的get方法。重寫compareTo方法的對象類

@Override 
    public int compareTo (Object o) 
    { 
     Item i = (Item) o; 
     if (this.getNumber() < i.getNumber()) 
      return -1; 
     if (this.getNumber() > i.getNumber()) 
      return 1; 
     return 0; 
+0

老實說,如果你不知道「當前對象」('this')是什麼,那麼你可能跳得太深了。去獲得一本Java入門教材,並從一開始就着手。一旦你獲得更多的面向對象的背景,這將更有意義。 – DaoWen

回答

3
Item i = (Item) o; 

這條線投射傳入對象ø類,然後將其存儲在

if (this.getNumber() < i.getNumber()) 

此行比較您收到你從調用此方法的一個目的,特別是它們的數量的字段。

return 0; 

只有在沒有滿足前面的條件時纔會觸及此行。在這種情況下,當this.getNumber()等於i.getNumber()時它返回0。

int x = objectOne.compareTo(objectTwo); 

,假定該行將會分配相應的回報值X。例如,如果objectOne.getNumber()小於objectTwo.getNumber(),則x將被分配-1值。

0

compareTo()返回int以指示所比較的值是否是更大的(1),等於(0)或更小的(-1)。有什麼問題?

+1

它應該很好地編譯,'getNumber'和'()'之間的空格不應該造成任何傷害。 – DaoWen

+0

Nitty-picking它不會編譯,因爲缺少'}';) – drvdijk

+0

@DaoWen:你是對的,我很困惑爲什麼這不會導致編譯錯誤。我想我從來沒有這樣寫過,總是認爲這是一個語法錯誤。 –

相關問題