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.