On Sun, 20 Feb 2022 18:38:35 GMT, XenoAmess <d...@openjdk.java.net> wrote:

>> src/java.base/share/classes/java/util/IdentityHashMap.java line 281:
>> 
>>> 279:      * @throws NullPointerException if the specified map is null
>>> 280:      */
>>> 281:     private IdentityHashMap(Map<? extends K, ? extends V> map, int 
>>> expectedSize) {
>> 
>> Why are you writing a new constructor when you can just change the old call 
>> to `this(m.size());`?
>
> @liach because I don't like to call m.size() twice.
> the original codes did so: one call at the `public IdentityHashMap(Map<? 
> extends K, ? extends V> map)` , and the second inside of `putAll`.
> well in most Map implementations `size()` seems O1, and returns a single int 
> number field, but it actually defers in some Map implementations.
> But java grammar do not allow me to make a local variable before calling 
> constructor in a constructor.
> In other words, `this()` must be the first line in a constructor.

and adding a private constructor should not cause any trouble I guess?

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

PR: https://git.openjdk.java.net/jdk/pull/7431

Reply via email to