Почему Java 6 переопределяет интерфейс keySet(), entrySet() и values () в SortedMap
Java 5 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/SortedMap.html
Java 6 https://docs.oracle.com/javase/6/docs/api/java/util/SortedMap.html
Как вы можете видеть, начиная с Java 6, эти три API-интерфейса переопределяются. Может кто-нибудь сказать мне, какова цель сделать такое изменение?
1 ответ
Методы должны были быть переопределены, чтобы иметь свой собственный Javadoc.
Другими причинами, по которым вы объявляете метод в подинтерфейсе, является возможность ограничивать тип возвращаемого значения или добавлять аннотации, но в этом случае они этого не делали, так что это не было причиной.
Javadoc является частью контракта интерфейса. В Java 6 Sun/Oracle почувствовала необходимость прояснить поведение этих методов на SortedMap
, что дополнительно ограничено поведением, которое они имеют в Map
,
Например, в SortedMap
ага keySet
говорит:
Итератор набора возвращает ключи в порядке возрастания.
На Map
тот же метод не имеет этого описания, как в общем, Карты могут возвращать наборы ключей в любом порядке, который им нравится; SortedMap ограничивает себя дальше.