Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
3.2.1
-
None
-
None
-
all
Description
FastTreeMap extends TreeMap in a way that doesn't preserve the superclass behavior. For example, the following code prints 'null', but I would expect it to print '1=1', which is what TreeMap does:
TreeMap map = new FastTreeMap();
//TreeMap map = new TreeMap();
map.put(1, "1");
map.put(3, "3");
Entry e = map.floorEntry(2);
System.out.println(e);
This behavior is surprising and can hit you every time a reference of type TreeMap refers to an instance of FastTreeMap. A subclass instance used through a superclass interface shouldn't change the visible behavior of its superclass.
The reason for this problem seems to be that FastTreeMap both extends TreeMap and delegates to a TreeMap via the 'map' field. I.e., there are two map instances for a single FastTreeMap instance.