1

一部のテストでreflectionEqualsを使用したかったのですが、null以外のすべてのフィールドのクラスがequalsを実装している場合にのみ機能することがわかりました。これは私の分野のいくつかには当てはまりません。equalsをオーバーライドし、equals(ヘッダー)を実装していないフィールドで明示的にreflectionEqualsを使用するサブクラスを使用することを考えました。これは機能しますが、面倒で、より良い方法があるかどうかを確認したいと思いました。私のテストでidentityequalsが機能しない理由は、gsonを使用してオブジェクトをデータベースにマーシャリングしているためです。これが私のサブクラスソリューションです:

    @Override
    public boolean equals(Object obj) {
        TrackingEvent other = (TrackingEvent) obj;
        return EqualsBuilder.reflectionEquals(this.getHeaders(), other.getHeaders()) && 
                EqualsBuilder.reflectionEquals(this, other, new String[] {"headers"});
    }
4

0 に答える 0