On 8/11/2011 5:21 PM, Ulf Zibis wrote:
Am 12.08.2011 01:03, schrieb Joe Darcy:
Hello.
On 8/11/2011 1:56 PM, Rémi Forax wrote:
On 08/11/2011 10:19 PM, assembling signals wrote:
Hello, community!
Enum does implement Comparable, while EnumSet does NOT implement
SortedSet and EnumMap doesn NOT implement SortedMap.
Should I file a bug report (RFE), would there be a chance to see
this being implemented in JDK8?
I've asked the same question with NavigableSet/Map during the JDK6
timeframe
so you should find the answer by Doug Lea on the
concurrency-interest list
[email protected]
Furthermore, you can't retrofit EnumSet to implement SortedSet
(an interface that already exists)
because since 1.5, a lot of code was written and some may rely on
the fact that EnumSet doesn't implement SortedSet.
Actually, that is not the sort of compatibility contract we usually
worry about enforcing over time. For example, in JDK 7 I retrofitted
the java.io.Closeable interface to several long-standing classes with
close methods that were not retrofitted before.
If this is correct, why can't we add method clone to interface
Cloneable? See Bug ID: 4098033 Cloneable doesn't define .clone
<http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4098033> .
I think you can add methods (e.g. via adding an interface) to an
existing *regular* class, but not to an abstract class or interface
without breaking source compatibility seriously.
EnumSet is *abstract* class.
Am I wrong, please correct me?
-Ulf
EnumSet is an effectively final class since it has no public or
protected constructors. The fact that the class is marked abstract is
an implementation detail in this case. Therefore, augmenting EnumSet to
implement another interface would follow the usual source, binary, and
behavioral compatibility [1] policies we use to evolve the JDK.
-Joe
[1]
http://cr.openjdk.java.net/~darcy/OpenJdkDevGuide/OpenJdkDevelopersGuide.v0.777.html#compatibility