RFR: JDK-8310913 Move ReferencedKeyMap to jdk.internal so it may be shared [v3]

Mandy Chung mchung at openjdk.org
Thu Jul 6 16:27:58 UTC 2023


On Thu, 6 Jul 2023 13:27:15 GMT, Roger Riggs <rriggs at openjdk.org> wrote:

>> `WeakReferenceKey::equals` and `SoftReferenceKey::equals`:
>> 
>> Instead of `return Objects.equals(get(), obj);`, suggest to do:
>> 
>> 
>>     return refersTo(obj);
>
>> @mlchung Not sure I catch the nuance. `refersTo` doesn't work if the search key is constructed. For example, if the key reference is a `record Pair(int a, int b) {}`, then `map.containsKey(new Pair(10, 20))` would locate with equals but not with `refersTo`.
> 
> Using `get()` on a reference can momentarily create a strong reference to the item. `refersTo()` does not.
> But since your map is holding proxies to the object,  `refersTo()` would be to the proxy, not the object; so that's not an option.

@RogerRiggs `WeakReferenceKey` is a `WeakReference` with the key as the referent.   I might be missing something?

-------------

PR Comment: https://git.openjdk.org/jdk/pull/14684#issuecomment-1623967599


More information about the core-libs-dev mailing list