Cómo utilizar métodos predeterminados en java
Aunque las interfaces son una característica muy útil de Java, tienen una limitación inherente: Después de definir una interfaz y luego construir las clases que implementan la interfaz, no hay manera fácil de modificar la interfaz mediante la adición de métodos adicionales a la misma.
Por ejemplo, supongamos que ha creado la siguiente interfaz:
interfaz pública reproducibles {void play () -}
A continuación, construir varias clases que implementan esta interfaz. He aquí un ejemplo sencillo:
clase Juego implementa reproducibles {public juego void () {System.out.println ("¡Buena suerte!") -}}
Este es un juego bastante inútil, por supuesto- que simplemente imprime el mensaje " Buena suerte "! siempre que el jugar se llama al método.
Ahora supongamos que usted decide que el Reproducibles interfaz debe tener una características adicionales - en concreto, que desea añadir la posibilidad de terminar el juego llamando a un método llamado dejar.
Se podría tener la tentación de simplemente agregar el nuevo método a la interfaz existente, así:
interfaz pública reproducibles {void play () - vacío quit () -}
Desafortunadamente, sin embargo, si lo hace romper el Juego clase, ya que no proporciona una implementación de la dejar método.
Se podría, por supuesto, modificar el Juego clase mediante la adición de una implementación de la dejar método. Pero lo que si usted ha escrito docenas o incluso cientos, de clases que implementan Reproducibles? Como se puede imaginar, una vez que una interfaz se ha hecho popular, se hace casi imposible de modificar.
Para aliviar este problema, Java 1.8 introduce un nuevo tipo de método de interfaz llama método por defecto, que suministra código que se utiliza como la aplicación del método de las clases que implementan la interfaz, pero por sí mismas no proporcionan una implementación para el método por defecto.
Por lo tanto, Java 8 le permite añadir de forma segura el dejar método para la Reproducibles interfaz especificando como un método por defecto, así:
interactuar reproducibles {void play () - vacío por defecto quit () {System.out.println ("Lo siento, no se permite dejar de fumar.") -}}
Aquí el Reproducibles interfaz especifica que si una clase que implementa no proporciona una implementación de la dejar método, se utilizará el método por defecto. En este caso, el método por defecto simplemente imprime el mensaje " Lo sentimos, no está permitido dejar de fumar ".
Tenga en cuenta que el ejemplo anterior no se compilará en versiones de Java anteriores a 1.8. Si recibe un mensaje de error cuando intenta compilar una interfaz que utiliza el por defecto palabras clave, compruebe su versión de Java para asegurarse de que está ejecutando la versión 1.8 o posterior.
He aquí un ejemplo completo que utiliza el Reproducibles interfaz y su método por defecto:
public class TestLambdaCollection {main (String [] args) {static void públicos Juego g = new Juego () - g.play () - g.quit () -}} interfaz reproducibles {void play () - vacío por defecto quit () {System.out.println ("Lo siento, no se le permite dejar de fumar.") -}} class Juego implementa reproducibles {public juego void () {System.out.println ("¡Buena suerte!") -}}
Cuando se ejecuta este programa, la siguiente se mostrará en la consola:
! Buena suerte sentimos, dejar de fumar no está permitido.