Java 8 – Expresións Lambda

Hoxe vou dicirlle algo que será moi útil. Imos falar dunha mellora sobre como usar funcións neste amado idioma: Java 8.
Non será algúns que perdeu funcións como parámetros ou devolución de chamadas, que ata agora tivemos que usar, por exemplo, con reflexión.

Dous novos amigos entran en xogo:
as interfaces funcionais son a base das expresións lambda e están definidas como calquera interface que ten un único método (unha parte de calquera outro obxecto que se estende).

expresións lambda ou funcións anónimas. Son un xeito de expresar unha función sen ter que declarala de xeito habitual, senón cunha notación máis similar ás matemáticas.

como este:

< p estilo = “Text-align: justify;” >
suma enteira pública (enteiro a , Enteiro b) {
devolución A + B;
} < / p >

podería expresarse como:
(A, B) – > A + B

moi sinxelo, certo?

Agora propoño un caso práctico dun proxecto que fixen últimamente.
Os métodos nos que ten que facelo Construír unha consulta baseada nun obxecto que contén os filtros a aplicar, o seguinte estándar é moi común:

< p estilo = “Texto- Aliña: Xustificar; “> Consulta de void pública (filtro filtro) {

if (filter.getName ()! = null) {
consulta . E. (“Name =” + filter.getName ());
}
se (filtro.getemail ()! = Null) {
Query.and (“Email =” + filter.getemail ()) ;
}

} < / p >

que podería ser refactorado a algo así:

p estilo = “Text-align: xustifique;” > PUBLIC T > VOID IFNOTNUL (T item, consumidor < t > Consumer) {
se (elemento! = Null) {
consumidor.accept (elemento);
}
} < / p >
< p estilo = “Text-align : Xustificar; “> Consulta de baleiro público (filtro de filtro) {
iFNotNull (filter.getName (), Nome – > .And (‘name =’ + nome);
ifnotnull (filtro.getemail (), correo electrónico – > Query.and (‘email =’ + correo electrónico);

} < / p

Non podo rescindir a miña publicación hoxe sen ofrecer o resumo de algunhas das interfaces funcionais que trae por defecto Java8, garda-lo en máis Unha ocasión:


runnable (void – > baleiro) : Executa unha acción sen argumentos e non devolve nada.
Provedor < t > (void – > t): executa unha acción que devolve un valor tipo T.
consumidor < t > ( T – > VOID): recibir un parámetro de tipo T e non devolver nada.
Biconsumer < t, u > (T, U – > VOIDO): Recibir dous parámetros de tipo T e U e non devolver nada.
Función

T, R > (T – > R): Recibir un parámetro de tipo T YD Evolve un valor de tipo R
bifunción < t, u, r > (t, u – > r): recibe dous parámetros de tipo T e U e devolve un valor R.
unaryOperator < t > (T – > t): recibir un parámetro de tipo T e devolve un valor do mesmo tipo.
BINARYOperator < T > (T, T – > t): recibe dous parámetros T tipo T e devolve un valor do mesmo tipo. (O exemplo de suma antes de ilustraría entraría nesta categoría).
predicar < t > (t – > booleano): avaliar o parámetro T-tipo T de verdade / falso.


Leave a Comment

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *