¿Por qué Scanner implementa Iterator <String>?

Me preguntaba por quéjava.util.Scanner implementosjava.util.Iterator?

Scanner implementa eleliminar método y lanza unUnsupportedOperationException.

Pero, ¿no debería una clase, al implementar una interfaz, cumplir con el contrato de la interfaz?

¿Cuál es el uso de implementariterator y agregando un método que arroja una excepción?

¿Por qué no simplemente evitar la implementación de la interfaz y mantenerla simple?

Se puede argumentar que está definido de modo que la clase que podría extenderseScanner podría implementar el método, comoAbstractList tiene unañadir método que arroja unUnsupportedOperationException. PeroAbstractList es unabstract clase, mientras queScanner es unfinal clase.

¿No es esta una mala práctica de diseño?

Respuestas a la pregunta(4)

Su respuesta a la pregunta