Java 8 – Expressões de lambda

Hoje vou lhe dizer algo que será muito útil. Vamos falar sobre uma melhoria sobre como usar funções nesta linguagem amada: Java 8.
Você não será alguns que você perdeu funções, como parâmetros ou retornos de chamada, que até agora tivemos que usar, para exemplo, com reflexão.

Dois novos amigos entram em jogo: As interfaces funcionais são a base das expressões lambda e são definidas como qualquer interface que tenha um único Método (uma parte de qualquer outro objeto estendendo).

Expressões de lambda ou funções anônimas. Eles são uma maneira de expressar uma função sem ter que declará-lo da maneira usual, mas com uma notação mais semelhante à matemática.

assim:

assim:

< p estilo = “alinhamento de texto: justificar;” >
suma inteira pública (inteiro A , Inteiro b) {
retorno A + B;
} < / p >

poderia ser expresso como:
(a, b) – > A + B

bastante mais simples, certo?

Agora proponho um caso prático de um projeto que eu fiz ultimamente.
Os métodos em que você tem que Construa uma consulta com base em um objeto que contém os filtros a serem aplicados, o seguinte padrão é muito comum:

< p estilo = “text- Alinhe: justificar; “> consulta pública void (filtro filtro) {

Se (filter.getname ()! = null) {
consulta .e (“Nome =” + filtro.getname ());
}
se (filter.getemail ()! = Null) {
consulta.and (“e-mail =” + filtro.getemail ())
}

} < / p >

que poderia ser refatoreizado a algo assim:

< p estilo = “Alinhamento de texto: justificar;” > Public < t > Void ifnotnull (item t, consumidor < t > Consumer) {
se (item! = Nulo) {
consumer.accept (item);
}
} < / p >
< p estilo = “alinhar texto : justificar; “> Public void consulta (filtro filtro) {
ifnotnull (filter.getname (), nome – > consulta .E (‘name =’ + nome);
ifnotnull (filtro.getemail (), email – > query.and (‘e-mail =’ + e-mail);

} < / p

Eu não posso encerrar meu post hoje sem oferecer o resumo de algumas das interfaces funcionais que ele traz por java8 padrão, salvá-lo mais de uma ocasião:


Runnable (vácuo – > anular) : Execute uma ação sem argumentos e não retorna nada.
fornecedor < t > (vácuo – > t): executa uma ação que retorna um valor do tipo T.
consumidor < t > ( T – > anular): Receba um parâmetro T-Type e não retorne nada.
Biconsumer < t, u > (t, u – > anule): Receba dois parâmetros t e u e não retornam nada. Função < t, r > (t – > r): Receba um parâmetro T-Type YD Evoluir um valor de tipo R e bifuncional < t, u, r > (t, u – > R): Recebe dois parâmetros T e U e retorna um valor R.
Unáriooperador < t > (t – > t): Receba um parâmetro T-Type e retorna um valor do mesmo tipo.
BinaryOperator < T > (t, t – > t): recebe dois parâmetros do tipo T e retorna um valor do mesmo tipo. (O exemplo de soma antes ilustrado entraria nesta categoria).
Pregar < t > (t – > boolean): Avalie o parâmetro T-Type para True / False.


Leave a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *