O concepto de método de referencia de Java 8

Método de referencia Java 8 é un dos conceptos que veñen coas novas expresións lambda que veñen en JDK 8, explicámolo paso a paso. Ata este momento en Java había dous conceptos, clases e interfaces fundamentais.

Java 8 Método Diagrama de referencia

con el chega As expresións de Java 8 Lambda aparecen:

Java 8 Método de referencia lambda

Estas expresións permítennos unha maior reutilización do noso código xa que no seu lugar de reutilizar clases podemos simplemente reutilizar funcións. Estes son convertidos para poñelo dalgún xeito na unidade de código mínimo. Para Java integrar estes conceptos, debemos supoñer que as concesións deben ser concesións xa que Java só permite a xestión de clases e interfaces. Deste xeito, as expresións de Lambda chegarán a ser interfaces que só soportan un método abstracto. En Java 8 hai moitas destas interfaces predefinidas. Para abordar o noso exemplo imos apoiar a interface de consumo < que ten un único método que se chama aceptación que recibe un parámetro e non devolve nada. É unha das interfaces funcionais máis sinxelas.

package com.arquitecturajava.lambdareferencias;import java.util.function.Consumer;public class Principal {public static void main(String args) {Consumer<String> consumidor = (x) -> System.out.println(x); consumidor.accept("hola");}}

Neste caso, temos asignado á interface funcional ao consumidor dunha expresión lambda que encaixa con ela. Lembre que a interface recibe un parámetro e non devolve nada, o resultado imprimirá Hola pola consola:

Método de referencia Java 8 Imprimir

Quizais queiramos ter unha maior flexibilidade no noso código e apoiarnos nun método que nos permita variar a expresión lambda e o texto que imprimimos.

package com.arquitecturajava.lambdareferencias;import java.util.function.Consumer;public class Principal {public static void main(String args) {Consumer<String> consumidor = (x) -> System.out.println(x);consumidor.accept("hola");procesar ((x)->System.out.println(x),"hola2");}public static <T> void procesar(Consumer<T> expresion, T mensaje) {expresion.accept(mensaje);}}

O resultado será similar:

Java 8 Método de referencia principal

Método de referencia Java 8

Agora as expresións lambda que permiten engadir máis flexibilidade ao código. Por exemplo, podemos ter outro método impreso na mesma clase que cumpre co patrón da expresión lambda (recibe un parámetro e non devolve nada).

Java 8 Función de referencia de método

Java 8 Método Función de referencia

Podemos usar a sintaxe de método de referencia de Java 8 para invocar o proceso proceso que nos apoia nesta nova función.

package com.arquitecturajava.lambdareferencias;import java.util.function.Consumer;public class Principal {public static void main(String args) {Consumer<String> consumidor = (x) -> System.out.println(x);consumidor.accept("hola");procesar ((x)->System.out.println(x),"hola2");procesar(Principal::imprimir,"hola3");}public static <T> void procesar(Consumer<T> expresion, T mensaje) {expresion.accept(mensaje);}public static void imprimir(String mensaje) {System.out.println("---------");System.out.println(mensaje);System.out.println("---------");}}

Como podes ver, usamos a sintaxe principal :: Impresión para ir como referencia a unha función que está no noso Programa propio.

Punte de referencia de método Java 8

A consola mostrará:

java8methodreferenceInternal

Isto traerá unha gran flexibilidade ao método xa que se temos outra clase que ten un método que recibe un parámetro e non devolve tamén pode usalo:

package com.arquitecturajava.lambdareferencias;public class Impresora {public void imprimir (String mensaje) {System.out.println("imprimiendo impresora");System.out.println(mensaje);System.out.println("imprimiendo impresora");}}

e N, neste caso, creamos a clase da impresora, podemos usar o seu método imprimir coma se fose unha referencia a unha expresión lambda.

package com.arquitecturajava.lambdareferencias;import java.util.function.Consumer;public class Principal {public static void main(String args) {Consumer<String> consumidor = (x) -> System.out.println(x);consumidor.accept("hola");procesar ((x)->System.out.println(x),"hola2");procesar(Principal::imprimir,"hola3");Impresora i= new Impresora();procesar(i::imprimir,"hola4");}public static <T> void procesar(Consumer<T> expresion, T mensaje) {expresion.accept(mensaje);}public static void imprimir(String mensaje) {System.out.println("---------");System.out.println(mensaje);System.out.println("---------");}}

O programa principal será Imprimir a funcionalidade da impresora:

Método Java 8 Impresión de referencia de método

Deixa unha resposta

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