目前我正在开发一个项目,在这个项目中我必须使用这个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;
}
答案 0 :(得分:1)
你正在覆盖equals方法,它应该看起来有点像这样。
您需要检查Object
wordtoCompare
是Word
类型还是当前对象。在您检查它是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)
}
}