Java CompareTo方法声明我无法将int转换为boolean,即使它们都没有使用

Bax*_*tex 0 java interface compareto comparable

public int compareTo(Person p) {
    int res = 1;
    String personStr = p.getId();
    String thisId = this.getId();

    if(thisId.equals(personStr)){
        res = 0;
    }
    else if(thisId.compareTo(personStr)){
        res = -1;
    }

    return res;
}
Run Code Online (Sandbox Code Playgroud)

我已经实现了一个非常简单的compareTo方法,但是我没有收到错误消息.如果statemint中的条件给我一条消息,说它不能从int转换为boolean.我明白了,但问题是我正在使用netiher.我只是想比较两个简单的字符串,为什么会这样呢?

Wil*_*nne 7

你应该注意的是接口'compareTo'返回一个int'public int compareTo'作为符号

如果语句依赖于布尔值,则使用thisId.compareTo(personStr)将返回一个整数,就像您正在创建的方法一样.

你的第一个if语句很好 - 'equals'返回一个布尔值.然而,第二个没有,它可能会返回-1,0或1.

  • @Baxtex最好使用`thisId.compareTo(personStr)<0` - 理论上,compareTo可以返回除-1,0或1以外的其他东西 - 例如-5. (2认同)