在Java中使用强制转换后的方法

在Java中使用强制转换后的方法,java,casting,comparable,compareto,Java,Casting,Comparable,Compareto,我已经编写了代码: public int compareTo(Object w) { //w = (Word)w if(this.count > (Word) w.getCount()) { return -1; } else if (this.count < (Word) w.getCount()) { return 1; } else { return 0; } } 根据指令,equals类应

我已经编写了代码:

public int compareTo(Object w) {
    //w = (Word)w

    if(this.count > (Word) w.getCount()) {
        return -1;
    } else if (this.count < (Word) w.getCount()) {
        return 1;
    } else {
      return 0;
    }
}
根据指令,equals类应该是这样的。
我得到的错误在w.getCount上,这是一个缺少符号的错误。

这是您需要的代码:

public int compareTo(Object o) {
  Word w = (Word) o;
  if(this.count > w.getCount()){
    return -1;
  }
  else if (this.count < w.getCount()) {
    return 1;
  }
  else {
      return 0;
  }
}
您遇到的问题是由于w是对象类型的事实,语句w=单词w不会做您想要的事情。问题的第二部分与Java中cast运算符的优先级有关。当您执行Wordw.getCount时,首先计算getCount部分,这意味着您正在有效地执行Word。您可以做的是将其包装在诸如Word w.getCount之类的括号中以解决该问题。

您应该实现Comparable,以便compareTo方法在compareToWord w中是公共的。此外,您还可以简化比较器代码:

public class Word implements Comparable<Word> {

  private int count;

  public int compareTo(Word w) {
    return w.count - this.count;
  }
}

当你施法时,你会遇到什么错误?你需要提供更多关于你的问题的细节。请把所有的单词代码和你遇到的错误都贴出来。把单词W也用括号括起来:Wordw.GetCount天哪,我真不敢相信我竟然忘了。非常感谢!
public class Word implements Comparable<Word> {

  private int count;

  public int compareTo(Word w) {
    return w.count - this.count;
  }
}
public int compareTo(Object w) {
  return ((Word) w).count - this.count;
}