Почему 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 ограничивает себя дальше.

Другие вопросы по тегам