gibts nicht,
wenn du das richtig ernsthaft betreiben willst, baue entsprechende Infrastruktur
a) übergib nur Keys/ Ids überall, wer immer dazu was braucht, muss mit der Id in einer zentralen Map nachschauen, die du bearbeiten kannst
b) übergib Wrapper-Objekte, die für sich bleiben können wie sie sind, aber ihre vermeinlich eigenen Daten bei Zugriff erst selber von woanders, z.B. wieder aus der zentralen Map holen
wenn du auf nicht bearbeitbare Fremd-APIs angewiesen bist, die etwa einen String haben wollen, dann bist du aufgeschmissen,
ein finaler String ist eine relativ sichere Sache, auch so gedacht damit nicht nach Übergabe und Prüfung noch verspätet der Inhalt ausgetauscht wird,
primitive Datentypen, andere finale unveränderliche Klassen wie Integer genauso
da wo es nicht final geht, Arrays, Listen, machen manche zur Sicherheit sich noch den Spass die Daten umzukopieren,
aber egal, es geht dir ja wohl eher um die eigenen Klassen
edit:
wenn du alle fraglichen Objekt mehr oder weniger verknüpft in einem großen Pool vorliegen hast,
könnte man natürlich schon versuchen mit Reflection überall vorbeizuschauen,
jedes Attribut zu vergleichen,
lokale Variablen laufender Thread-Methoden würde man damit aber nicht erreichen,
und Vorsicht vor Kreisen an Referenzen