hashCode()を使って、特定のインターフェースを継承した実装クラスを特定するという実装について、疑問を抱きました。

hashCode() ”これは通常、オブジェクトの内部アドレスを整数に変換することによって実装されます”
とあるので、Mapとして保持し、外部で記憶したhashCodeからインスタンスを引っ張りだす、という事は可能でしょうか?
hashCode()はintなので、わりとすぐ上限が来てしまうのかなとも思います。

アドレス計算なのであれば、そのアドレスが上書きされた場合には衝突するでしょうが、
springフレームワークの場合、一つのインスタンスからインジェクションしたインスタンスはまとめてインスタンス化されるので、アドレスの重複もあり得ないのでは?GCされない限りハッシュ値がコンフリクトすることもないのかな、とも思います。

これらの推測がすでに矛盾してしまっている(相当量のメモリを積み、相当量のインスタンスを生成した場合、hash値は絶対に衝突しないのか?)ので、ご存じの方がいらっしゃいましたら教えてください。