RFR: 8266571: Sequenced Collections
Stuart Marks
smarks at openjdk.org
Mon Mar 20 23:45:06 UTC 2023
On Thu, 3 Nov 2022 07:41:05 GMT, ExE Boss <duke at openjdk.org> wrote:
>> Yeah, the coupling here is rather distasteful. (Otherwise known as a quick and dirty hack.) Unfortunately the coupling between HashMap and LinkedHashMap is pretty special-purposed for exactly the intended usage modes (insertion-order and access-order). It could be improved, but it would probably require some refactoring in HashMap, which I didn't want to do right now, in order to keep the sequenced stuff separate.
>
> Another issue are custom `LinkedHashMap` subclasses which override `put(…)` to do input validation, which would get bypassed by `internalPut(…)`. A better solution to a private field would be to use [JEP 429: Scoped values].
>
> --------------------------------------------------------------------------------
>
> That said, using `internalPut(…)` for the case where `getClass() == LinkedHashMap.class` would probably be fine.
>
> [JEP 429: Scoped values]: https://openjdk.org/jeps/429
Input validation can't really be done in `put()`, since there are a bunch of other paths such as `computeIfAbsent()` that will insert entries without calling `put()`.
I think some judicious refactoring in HashMap to provide better support to LinkedHashMap is called for here.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/7387#discussion_r1014576382
More information about the core-libs-dev
mailing list