Como usar métodos padrão em Java

Embora as interfaces são um recurso incrivelmente útil de Java, eles têm uma limitação inerente: Depois de definir uma interface e, em seguida, construir classes que implementam a interface, não há nenhuma maneira fácil de modificar a interface, adicionando métodos adicionais para ele.

Por exemplo, suponha que você tenha criado a interface a seguir:

interface pública reproduzíveis {void play () -}

Você, então, construir várias classes que implementam esta interface. Aqui está um exemplo simples:

classe jogo implementa reproduzíveis {jogo public void () {System.out.println ( "Boa sorte!") -}}

Este é um jogo bastante inútil, de course- ele simplesmente imprime a mensagem # 147-Boa sorte! # 148- sempre que o Toque método é chamado.

Agora, suponha que você decidir que o jogável interface deve ter um recursos adicionais - especificamente, pretende adicionar a capacidade de terminar o jogo, chamando um método chamado desistir.

Você ficaria tentado a apenas adicionar o novo método para a interface existente, como esta:

interface pública reproduzíveis {void play () - vazio quit () -}

Infelizmente, porém, isso vai quebrar o Jogo classe, pois não fornece uma implementação do desistir método.

Você poderia, é claro, modificar o Jogo classe, adicionando uma implementação do desistir método. Mas e se você tem escrito dezenas, ou mesmo centenas, de classes que implementam jogável? Como você pode imaginar, uma vez que uma interface tornou-se popular, torna-se quase impossível de se modificar.

Para aliviar este problema, Java 1.8 introduz um novo tipo de método de interface chamado de método padrão, que fornece o código que irá ser utilizado como a aplicação do método para as classes que implementam a interface, mas não fornecem uma implementação para o método padrão.

Assim, Java 8 permite que você adicione segurança a desistir método para o jogável Interface especificando-a como um método padrão, como este:

Interface reproduzíveis {void play () - vazio padrão quit () {System.out.println ( "Desculpe, parar não é permitido.") -}}

aqui o jogável interface especifica que se uma classe de implementação não fornece uma implementação do desistir método, será utilizado o método padrão. Neste caso, o método padrão simplesmente imprime a mensagem # 147 Desculpe, desistir não é permitido. # 148-

Note que o exemplo anterior não irá compilar em versões de Java antes de 1.8. Se você receber uma mensagem de erro quando você tenta compilar uma interface que utiliza o padrão palavra-chave, verificar a sua versão Java para se certificar de que você está executando a versão 1.8 ou posterior.

Aqui está um exemplo completo que utiliza o jogável interface e seu método padrão:

TestLambdaCollection classe pública {public static void main (String [] args) {jogo g = new Game () - g.play () - g.quit () -}} Interface reproduzíveis {void play () - vazio padrão quit () {System.out.println ( "Desculpe, parar não é permitido.") -}} class Jogo implementa reproduzíveis {jogo public void () {System.out.println ( "Boa sorte!") -}}

Quando você executar este programa, o seguinte será exibida no console:

Boa sorte! Desculpe, parando não é permitido.

menu