+ compareTo(wordtoCompare:Word):整数Java

时间:2015-10-20 06:29:20

标签: java class uml compareto

目前我正在开发一个项目,在这个项目中我必须使用这个UML图来创建和其他类我理解了所有内容,但我对最后一行感到困惑。

compareTo(wordToCompare : Word) : Integer 

由于Word是类的名称,我将如何插入参数?我尝试输入一个Object作为参数,但它说:

  

对象是与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;
}

3 个答案:

答案 0 :(得分:1)

你正在覆盖equals方法,它应该看起来有点像这样。 您需要检查Object wordtoCompareWord类型还是当前对象。在您检查它是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 :(得分:0)

您可以创建具有Word参数的compareTo方法。 (Word是您当前正在创建的课程)

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

答案 2 :(得分:0)

我想这样的东西

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


   }

.. other stuff

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

}