2010-12-31 12 views
2

異なるデータオブジェクトを比較する必要があります。2つのJavaオブジェクトの比較(データ型は不明)

どのようにすればいいのですか?私は事前に取得するデータタイプは何か分かりません。もし私がapacheコモンズから任意のutilを使用する必要があれば、それを参照してください。

現在、オブジェクトの等価性を比較するために.equals()を使用しています。これは、2つの文字列の品質を比較するときに問題なく動作しています。私はjava.sql.dateデータ型を比較している場合、両方が同じ値を含んでいても等しくないことを示しています。

この点について私に示唆することができます。それは完全にあなたが知っているかもしれませんが、equals()方法のポイントは、オブジェクトを比較することである

+0

java.sql.Date.equals(別のjava.sql.Date)を使用する場合、日付はミリ秒まで同じでなければなりません。したがって、同じ値(getTime()を参照)が使用されている場合、それらは不等ではありません。 – extraneon

+0

equals()メソッドをオーバーライドするだけでなく、Comparatorインターフェイスも参照できます。 – Lukasz

答えて

1

値は、==または!=オペレータを使用した参照比較とは対照的です。

java.sql.Dateオブジェクトの例では、正確性のレベルによって、表現する時間の特定の部分(ミリ秒の値など)が異なるため、日付はおそらく等しくありません。

本質的には、各オブジェクトのequals()の実装に完全に依存します。また、を明確にしたいことを強調したいと思います。正確には、例えば、実行時に同じタイプを意味するか、またはオブジェクトの一部のリフレクションによって記述された同じパブリックフィールド名を含む同じタイプを意味します。 。

+0

私は時間の比較で私が得ているデータ型は何か分からなかった。 しかし、両方のオブジェクトは同じデータ型です。 1つは新しい値を含み、もう1つは古い値を含みます – Narendra

+0

OK、そのデータ型のequalsメソッドを実装します –

+0

あなたは 'instanceof'演算子を使って、クラスを意味するデータ型を確認することもできます –

0

、あなたがequals()を呼び出している対象にするオブジェクトのequals()メソッドの実装に依存

おかげで、
ナレンドラ