私は自分のプロジェクトで作業しています (EMF Compare も使用しています)。使用しているオブジェクトごとに一意の ID を保持する必要があるため、IdentityHashCode を使用することにしました。私が理解している限り、この値はコンパイルを通じて同じです。
オブジェクトを別のクラスのメソッドのパラメーターとして指定しましたが、ハッシュコードを取得しようとすると、オブジェクトの値を出力したときに表示されるものとは異なります。
このようなもの:
System.out.println("The Object is: "+obj)
System.out.println("The hash ID is: +Integer.toHexString(System.identityHashCode(obj)));
しかし、結果として私はこれを得ます:
オブジェクトは次のとおりです。***xxxxxxxxxxxxxx***.EntityImpl@18e588c (name: Comment) has been removed.
ハッシュ ID は次のとおりです。1ec1758
ご覧のとおり、2 つの値 (18e588c
と1ec1758
) はまったく異なりますが、その理由はわかりません。これまで私が行った(そしてそれが機能する)唯一のことは、オブジェクトの文字列を取得し、部分文字列メソッドを使用して取得することです18e588c
(この例の場合)
回答をいただければ幸いです。