Вы видели это в документации или в самой реализации?
- personfge  schedule28.12.2012
comment
@fge: это в исходном коде Oracle JDK. Это действительно написано как public class WeakHashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>.
- personT.J. Crowder  schedule28.12.2012
За исключением того, что кто-то может указать на причину, опубликованную где-то в Интернете авторами WeakHashMap в JDK, мы можем только строить догадки. Предполагается, что это улучшает автоматически сгенерированную документацию. Это не влияет на интерфейсы, предоставляемые классом, или на то, как вы его используете.
personT.J. Crowderschedule27.12.2012
comment
Сгенерированный javadoc для класса зависит от используемого класса doclet, и бывает, что doclet по умолчанию глубоко запрашивает интерфейсы, поэтому не имеет значения, опускаете ли вы избыточные интерфейсы или нет: они появятся в javadoc.
- personfge; 28.12.2012
comment
@fge: я не спорю. :-) Хочется верить, что инженеры Sun (как и раньше) сделали это не просто так. Я не хочу, но я хочу...
- personT.J. Crowder; 28.12.2012
Хотя это действительно избыточно, оно гарантирует, что если реализация интерфейса будет удалена из родителя, дочерний интерфейс по-прежнему будет поддерживать интерфейс Map и производить необходимые ошибки компиляции.
personcklabschedule27.12.2012
comment
Если вы перебазировали его, а новая база не реализовала Map<K,V>, и вы не добавили implements и необходимую сантехнику, это было бы довольно шокирующим изменением. :-)
- personT.J. Crowder; 28.12.2012
Это "выглядит" как пропуск. Если вы расширяете класс, вы автоматически реализуете все интерфейсы, реализованные базовым классом (независимо от того, является ли этот базовый класс abstract или нет). Итак, учитывая:
public interface I {}
public class A implements I {}
public class WeakHashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>
. - person T.J. Crowder   schedule 28.12.2012