RFC: draft API for JEP 269 Convenience Collection Factories
Stuart Marks
stuart.marks at oracle.com
Sat Oct 17 16:46:24 UTC 2015
On 10/10/15 6:55 AM, Remi Forax wrote:
> There is an issue with LinkedHashMap (resp LinkedHashSet),
> it inherits from HashMap /facepalm/, and static methods are accessible through class inheritance /facepalm/.
> So if LinkedHashMap doesn't declare some methods of(),
> LinkedHashMap.of("foo")
> will return a HashMap :(
Hi Rémi,
Thanks for pointing this out. I had forgotten about "inheritance" of static
methods. /Facepalm/ indeed. The original proposal (July 2014) avoided this issue
by adding static methods only on interfaces, which are *not* inherited. When we
added statics on concrete classes this problem returned.
(I view calling an "inherited" class static method to be poor coding style, but
neither javac nor NetBeans warns about it.)
Well, perhaps we won't be adding static factories to the concrete collections
after all, so maybe we can dodge this issue. See messages downthread.
s'marks
More information about the core-libs-dev
mailing list