私は、私のアプリで2つの異なる方法でデータをオブジェクトに埋め込むというような問題があります。 時には、2番目のフィールドにはいくつかのヌルフィールドがあることがあります。 私はこれらの2つのオブジェクトを比較したいと思います.1つのオブジェクトにnull値のフィールドがある場合、このフィールドは比較対象から除外されます。 誰かが実際にそれをどうやって考えていますか? 私にとって最善の方法は、InteliJのequals()とhashCode()、...ジェネレータで行うのと同じように、コードをgenereteするために使用するpseudoEquals()メソッドテンプレートです。 または一部マッチャーを使用するが、私はものを見つけられませんでした:/2つのオブジェクトを比較するときにnullフィールドを除外する方法は?
class A {
T f1;
T f2;
T f3;
}
A a1 = new A(value1, value2, value3);
A a2 = new A(value1, null, value3);
a1.pseudoEquals(a2)
=>真
だから私はこのような何かを生成することができるようにInteliJにジェネレータテンプレートを持っているしたいと思います:
public boolean pseudoEquals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (f1 == null && f2 == null && f3 == null) return false;
A that = (A) o;
if (that.f1 == null && that.f2 == null && that.f3 == null) return false;
if ((f1 != null && that.f1 != null) && !f1.equals(that.f1)) return false;
if ((f2 != null && that.f2 != null) && !f2.equals(that.f2)) return false;
if ((f3 != null && that.f3 != null) && !f3.equals(that.f3)) return false;
return true;
}
誰でも私にそのようなテンプレートを作成する方法を示すことができますか、それとも誰かがそれを持っていますか? :) ありがとうございます。
[オブジェクトがJavaでnullかどうかを確認する方法](http://stackoverflow.com/questions/15800738/how-to-check-if-object-is-null-in-java) –
@山本さん - あなたが追加した質問と重複していません。 しかし、なぜこのコードがテンプレートとして必要なのですか? 2つ目は、Javaが明示的に使用する方法を知っているオブジェクトのequal()メソッドとして実装する必要があります。 –
@h__ - それはjava.inの質問の基本です。彼は2つのオブジェクトを比較するときにnullフィールドを除外する方法を尋ねます。これはJavaでフィールドのcheck null値と同じです。 –