¿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?