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 client-libs-dev
mailing list