2015-10-20 63 views
0

目前我正在研究一個項目,在這個項目中我必須使用這個UML圖來創建額外的類,但是我明白了一切,但最後一行讓我感到莫名其妙。+ compareTo(wordtoCompare:Word):整數Java

compareTo(wordToCompare : Word) : Integer 

由於Word是類的名稱,我將如何插入參數?我嘗試輸入一個對象作爲參數,但它說:

對象是與Word不兼容的類型。

我研究瞭如果Word是非原始數據類型但找不到任何信息。我很缺乏經驗,並且很困惑,如果任何人都可以提供一些幫助,我會非常感激。

Word class UML 
-wordCharacters : String 
-count : integer 
+ CONSTRUCTOR (word : String) 
+ getWord() : String 
+ getCount() : Integer 
+ incrementCount() : void 
+ toString() : String 
+ equals(wordtoCompare : Object) : Boolean 
+ compareTo(wordtoCompare : Word) : Integer 

@Override 
public boolean equals(Object wordtoCompare) { 
    boolean flag = false; 
    String currentWord = wordtoCompare.getClass().getName(); 

    this.compareTo(wordtoCompare); 

    return flag; 
} 

public Integer compareTo(Word wordtoCompare) { 

    return 0; 
} 
+0

你可以發佈'compareTo'的代碼嗎? – SomeJavaGuy

+0

我不明白你是如何限制參數類型是同一類。你能詳細說明這個問題嗎? – ChiefTwoPencils

+2

當然,返回類型是'Integer',而不是'int'?因爲它看起來像你的'Word'類應該實現'Comparable '。 – Seelenvirtuose

回答

1

要覆蓋equals方法,它應該看起來有點像這樣。 您需要檢查ObjectwordtoCompareWord類型還是它的當前對象。在確認是否爲Word的類型或子類型後,您可以將wordtoCompare投射到一個實體Word對象上,並使用它進行操作。

@Override 
public boolean equals(Object wordtoCompare) { 
    boolean flag = false; 
    if(wordtoCompare == this) return true; 
    if(!(wordtoCompare instanceof Word)) return false; 
    Word word = (Word)wordtoCompare; 

    this.compareTo(word); 
    // Whatever you do with your flag 
    return flag; 
} 
+1

我就是這樣一個noob哈哈我只是忘了我可以用這個來表示我在感謝你的課程凱文提醒我! –

0

您可以創建具有Word參數的compareTo方法。 (字是你目前正在製作類)

public class Word{ 
    .... 

    public int compareTo(Word wordToCompare){ 
     int result = 0; 
     //do your compare stuff 
     return result; 
    } 

} 

如果這不是你的問題,我可能不明白的問題,正確

編輯:

equals方法看起來如下:

public boolean equals(Object wordtoCompare) { 
    boolean flag = false; 
    String currentWord = wordtoCompare.getClass().getName(); 

    this.compareTo(wordtoCompare); 

    return flag; 
} 

但是你必須確保你正在使用的對象是一個真正的Word。

@Override 
public boolean equals(Object wordtoCompare) { 
    boolean flag = false; 
    if(wordtoCompare == this) return true; 
    if(!(wordtoCompare instanceof Word)) return false; 
    Word word = (Word)wordtoCompare; 

    int compareResult = this.compareTo(wordtoCompare); 
    // Whatever you do with your flag 
    return flag; 
} 

此方法取自Kevin Esche,因爲他正確實施了此方法。謝謝。

然後你必須正確實施compareTo

0

像這樣的事情我想

class Word{ 
    String wordCharacters; 
    int count; 
    public Word(String word){ 
    ... 


    } 

.. other stuff 

public int compareTo(Word other){ 
    return wordCharacters.compareTo(other.wordCaracters) 
} 

}