Como usar expressões lambda em Java 8

Java 8 introduz um novo recurso que em alguns aspectos é semelhante ao classes anônimas, mas com a sintaxe mais concisa. Mais especificamente, uma expressão lambda permite que você crie uma classe anônima que implementa um tipo específico de interface chamada interface funcional- que tem um e somente um método abstrato.

o Bola interface atende essa definição:

Bola de interface {hit void () -}

Aqui o único método abstrato é o acertar método.

A interface funcional pode conter métodos adicionais, desde que não são abstratos. Até Java 8, isso não foi possível porque uma interface pode conter métodos abstratos. No entanto, em Java 8 você pode criar métodos padrão que fornecem uma implementação padrão. Assim, uma interface funcional pode conter um ou mais métodos padrão, mas pode conter apenas um método abstrato.

Uma expressão lambda é uma maneira concisa para criar uma classe anônima que implementa uma interface funcional. Em vez de fornecer uma declaração de método formal que inclui o tipo de retorno, o nome do método, tipos de parâmetro, e corpo do método, você simplesmente definir os tipos de parâmetros e o corpo do método. O compilador Java infere o resto com base no contexto em que utiliza a expressão lambda.

Os tipos de parâmetros são separados do corpo do método por um novo operador, o chamado operador de seta, que consiste de um hífen seguido por um símbolo de maior que. Aqui está um exemplo que implementa a Bola interface:

() -> {System.out.println ( "Você batê-lo!") -}

Aqui a expressão lambda implementa uma interface funcional, cujo único método não aceita parâmetros. Quando o método é chamado, o texto "Você batê-lo!" é impresso.

Você pode usar uma expressão lambda em qualquer lugar você pode usar uma expressão Java normal. Você vai usá-los mais em instruções de atribuição ou como parâmetros passados. A única restrição é que você pode usar uma expressão lambda somente em um contexto que requer uma instância de uma interface funcional. Por exemplo, aqui está um programa completo que usa uma expressão lambda para implementar o Bola interface:

classe pública LambdaBall {public static void main (String [] args) {Bola b = () -> {System.out.println ( "Você batê-lo!") -} -b.hit () -} interface de Bola {void acertar()-}}

A sintaxe geral para uma expressão lambda é a seguinte:

(parâmetros) -> expressão

ou isto:

(parâmetros) -> { declaração- ...}

Se você usar uma expressão, um ponto e vírgula não é necessária. Se você usar uma ou mais declarações, as declarações devem ser colocados entre chaves e um ponto e vírgula é necessária no final de cada declaração.

Não se esqueça de que a declaração em que utiliza a expressão lambda deve-se terminar com um ponto e vírgula. Assim, a expressão lambda no exemplo anterior tem duas vírgulas em estreita proximidade:

Bola b = () -> {System.out.println ( "Você batê-lo!") -} -

O primeiro ponto e vírgula marca o fim da instrução que chama System.out.println- o segundo ponto e vírgula marca o fim da declaração de atribuição que atribui a expressão lambda para a variável b.

menu