¿Por qué ArrayList tiene “implementa la Lista”?

En el Marco de Colección tenemos la List interfaz y la clase AbstractList :

 AbstractList implements List 

Y ArrayList extiende AbstractList y

 implements List 

Mi pregunta: ¿por qué ArrayList tiene implements List cláusula implements List ?

Si ArrayList extends AbstractList y AbstractList implements List , ¿no podemos decir que ArrayList implement List ?

Sí. Pudo haber sido omitido. Pero así es inmediatamente visible que es una List . De lo contrario, se requeriría un clic adicional a través del código / la documentación. Creo que esa es la razón, claridad.

Y para agregar lo que comentó Joeri Hendrickx, es con el propósito de mostrar que ArrayList implementa List . AbstractList en la imagen completa es solo por conveniencia y para reducir la duplicación de código entre las implementaciones de List .

Lo más probable es que esto aumente la trazabilidad de la estructura de herencia. De esta forma, no tiene que recorrer todo el árbol de herencia cuando navega por el Javadoc o similar.

Mis 2 centavos es para mantener el hecho de que ArrayList es una lista. AbstractList solo completa ciertas implementaciones que requiere la Lista.