コードから始めましょう。
Future<MyResult> obj = getFuture();
debugLog.println("Handling future: " + System.identityHashCode(obj);
その後、別の場所で再び同じになるか、同じコードが別のスレッドで再度実行される可能性があります。
Future<MyResult> obj = getFuture();
debugLog.println("Handling future: " + System.identityHashCode(obj);
上記で、objが同じオブジェクトの場合、デバッグ出力は明らかに同じになります。ただし、それらが異なる場合でも、ハッシュの衝突の可能性があるため、異なるオブジェクトでも印刷出力は同じになる可能性があります。したがって、同じ出力(またはより一般的には同じ文字列)を持つことは、同じオブジェクトを保証するものではありません。
質問:Javaで任意のオブジェクトの一意のID文字列を取得する方法はありますか?または、より正式には、static String Id.str(Object o)
これが常に真になるようにメソッドを指定します。
final Object obj1 = ...;
final String firstId = Id.str(obj1);
// arbitrary time passes, garbage collections happen etc.
// firstId and obj1 are same variables as above
(firstId.equals(Id.str.obj2)) == (obj1 == obj2)