Mirando a través del Java Collections Framework, he notado que algunas de las interfaces tienen el comentario (optional operation). Estos métodos permiten implementar clases a través de un UnsupportedOperationExceptionsi simplemente no quieren implementar ese método.
Un ejemplo de esto es el addAllmétodo en Set Interface.
Ahora, como se indica en esta serie de preguntas, las interfaces son un contrato definitorio de lo que el uso puede esperar.
Las interfaces son importantes porque separan lo que hace una clase de cómo lo hace. El contrato que define lo que un cliente puede esperar deja al desarrollador libre de implementarlo de la forma que elija, siempre y cuando mantenga el contrato.
y
Una interfaz es una descripción de las acciones que puede hacer un objeto ... por ejemplo, cuando se activa un interruptor de luz, la luz se enciende, no importa cómo, solo eso. En la programación orientada a objetos, una interfaz es una descripción de todas las funciones que debe tener un objeto para ser una "X".
y
Creo que el enfoque basado en la interfaz es significativamente mejor. Luego puede burlarse de sus dependencias muy bien, y todo está básicamente menos estrechamente acoplado.
¿Cuál es el punto de una interfaz?
Interfaz + Extensión (mixin) vs Clase Base
Dado que el propósito de las interfaces es definir un contrato y hacer que sus dependencias se acoplen libremente, ¿no tiene algunos métodos arrojar una UnsupportedOperationExceptionespecie de derrota del propósito? Significa que ya no se me puede pasar ay Setsolo usarlo addAll. Más bien, tengo que saber qué implementación se Setme aprobó, para poder saber si puedo usarla addAllo no. Eso me parece bastante inútil.
Entonces, ¿de qué sirve UnsupportedOperationException? ¿Solo está compensando el código heredado y necesitan limpiar sus interfaces? ¿O tiene un propósito más sensorial que me estoy perdiendo?
src.zipél, funciona muy bien. Es útil saber exactamente qué código se está ejecutando el JRE a veces y no diferir al JavaDoc, que puede ser un poco detallado.
addAllenHashSet. Difiere a la implementación predeterminada en laAbstractCollectionque ciertamente no se lanzaUnsupportedOperationException.