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 を返します。
これは、エラーが発生したときの Expressions ウォッチリストのスクリーンショットです。ご覧のとおり、this.speciesEng.equals(other.speciesEng) は、両方の文字列が同じように見えるにもかかわらず、false を返しています。
文字列は最初は同じ文字列リソースからのものですが、どちらも XMPP 接続を介して渡されて戻ってきています。
編集: XMPP 接続を介してそれらを渡すために、それらは他の文字列と連結されて、OutputHolder 全体を表します。それらは、返されるときに .substring(start,end) を使用して分離されます。部分文字列から新しい文字列を作成すると違いが生じるかもしれないと思いましたが、それは何の効果もありませんでした。トリミングもしませんでした。
問題のデバッグを進める方法について途方に暮れています。どんな助けや提案も歓迎します。