+ compareTo(wordtoCompare : Word) : 整数 Java
+ compareTo(wordtoCompare : Word) : Integer Java
目前我正在做一个项目,在这个项目中我必须使用这个 UML 图来创建和附加 class 我明白一切,但我对最后一行感到困惑。
compareTo(wordToCompare : Word) : Integer
既然 Word 是 class 的名称,我该如何插入参数?我尝试输入一个对象作为参数,但它说:
Object is an incompatible type with 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;
}
您可以只创建具有 Word 参数的 compareTo 方法。 (Word 是您当前正在创建的class)
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;
}
但是您必须确保您正在使用的对象确实是一个词。
@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
。
我猜是这样的
class Word{
String wordCharacters;
int count;
public Word(String word){
...
}
.. other stuff
public int compareTo(Word other){
return wordCharacters.compareTo(other.wordCaracters)
}
}
您正在覆盖 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;
}
目前我正在做一个项目,在这个项目中我必须使用这个 UML 图来创建和附加 class 我明白一切,但我对最后一行感到困惑。
compareTo(wordToCompare : Word) : Integer
既然 Word 是 class 的名称,我该如何插入参数?我尝试输入一个对象作为参数,但它说:
Object is an incompatible type with 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;
}
您可以只创建具有 Word 参数的 compareTo 方法。 (Word 是您当前正在创建的class)
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;
}
但是您必须确保您正在使用的对象确实是一个词。
@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
。
我猜是这样的
class Word{
String wordCharacters;
int count;
public Word(String word){
...
}
.. other stuff
public int compareTo(Word other){
return wordCharacters.compareTo(other.wordCaracters)
}
}
您正在覆盖 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;
}