我偶尔会从 String.equals(String) 得到奇怪的结果。
这是代码:
boolean equals(OutputHolder other){
boolean result=true;
if( ! this.speciesEng.equals(other.speciesEng))
result=false;
else if( ! this.date.equals(other.date))
result=false;
else if( ! this.gridRef.equals(other.gridRef))
result=false;
else if( ! this.recorder.equals(other.recorder))
result=false;
return result;
}
一切都非常简单,但在某些对象上 .equals() 在看似 2 个相同的字符串上返回 false。
这是发生错误时表达式监视列表的屏幕截图。如您所见,尽管这两个字符串看起来相同,但 this.speciesEng.equals(other.speciesEng) 返回 false。
这些字符串最初来自同一个字符串资源,但都通过 XMPP 连接并返回。
编辑:要通过 XMPP 连接传递它们,它们已与其他字符串连接以表示整个 OutputHolder。然后在返回时使用 .substring(start,end) 将它们分开。我突然想到,如果我从子字符串中创建一个新字符串可能会有所不同,但这没有任何效果。也没有修剪它们。
我不知道如何继续调试问题。欢迎任何帮助或建议。