Is there any reason EnumMap and EnumSet are not Navigable

前端 未结 3 1319
广开言路
广开言路 2020-12-15 03:33

Enum is Comparable which means you can have

NavigableSet modes = new TreeSet<>();
NavigableMap modeMap = ne         


        
相关标签:
3条回答
  • 2020-12-15 03:52

    Many "obvious" features are missing from the JDK and its various APIs. Why this particular feature was omitted / forgotten? We can only guess. But your question has been a RFE at Sun/Oracle for a long time:

    • http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6278287
    • http://www.java.net/node/644910

    You could support those RFEs by commenting on them. Note, here's an authoritative answer by Joshua Bloch on the subject:

    I vaguely recall considering it, but I can't recall whether we explicitly rejected it with good reason. We were running very low on time when I implemented EnumSet and EnumMap, and it's possible that time played a role in our decision

    http://comments.gmane.org/gmane.comp.java.jsr.166-concurrency/2158

    So even he had to guess :-)

    0 讨论(0)
  • 2020-12-15 03:57

    My best guess is that navigability was not seen as a major use case for enum sets. There is nothing in the implementation that would prevent navigability. The rare use cases that combine the need for a set of enum members with navigability are covered by the TreeSet and TreeMap.

    0 讨论(0)
  • 2020-12-15 03:57

    The post doesn't directly answers the question, neither attempts to, it merely conveys why Navigable was introduced

    Post as I was requested to (and it's too long for a comment)

    The short answer is that Navigable exists because we didn't have anything like upcoming "defenders" -- Sorted didn't describe all the common functionality, and there was no way to do so except to introduce a new interface. In practice, I'm sure "Sorted" is still used much more often than "Navigable" as a declaration type, because most people don't need the methods defined in Navigable but not Sorted. Plus "Navigable" is just not a very nice name :-)

    -Doug

    0 讨论(0)
提交回复
热议问题