O conceito de método de referência Java 8

Java 8 Método de referência é um dos conceitos que vêm com as novas expressões lambda que vêm em JDK 8, explicaremos passo a passo. Até este momento em Java havia dois conceitos, classes e interfaces fundamentais.

Diagrama de referência de método Java 8

com ele chega Java 8 lambda expressões aparecem:

Java 8 Referência de método lambda

Estas expressões permitem-nos uma reutilização maior do nosso código já que de reutilizar classes, podemos simplesmente reutilizar funções. Estes são convertidos para colocá-lo de alguma forma na unidade de código mínimo. Para o Java para integrar esses conceitos, devemos supor que as concessões devem ser concessionárias, uma vez que o Java permite apenas o gerenciamento de classes e interfaces. Assim, as expressões lambda vêm para serem interfaces que suportam apenas um método abstrato. Em Java 8 existem muitas dessas interfaces predefinidas. Para resolver nosso exemplo, vamos suportar a interface do consumidor < que tem um único método que é chamado de aceitar que recebe um parâmetro e não retorna nada. É uma das interfaces funcionais mais simples.

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, atribuídos ao consumidor de interface funcional uma expressão lambda que se encaixa nela. Lembre-se de que a interface recebe um parâmetro e não retorna nada, o resultado imprimirá olá pelo console:

Java 8 Método de referência Imprimir

Podemos querer ter uma maior flexibilidade em nosso código e nos apoiar em um método que nos permite variar a expressão 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á semelhante:

Java 8 Referência principal

Java 8 Método de referência

Agora as expressões lambda que permitem adicionar mais flexibilidade ao código. Por exemplo, podemos ter outro método imprimir na mesma classe que está em conformidade com o padrão da expressão lambda (recebe um parâmetro e não retorna nada).

Java 8 Função de referência do método

Java 8 Função de referência do método

Podemos usar a sintaxe do método de referência Java 8 para invocar o processo Processo nos apoiando nesta nova função.

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 você pode ver, usamos a sintaxe principal :: impressão para ir como referência uma função que está em nosso Programa próprio.

Java 8 Ponteiro de referência do método

O console mostrará:

java8methodReferenceInternal

Isso trará grande flexibilidade para o método, uma vez que, se tivermos outra classe que tenha um método que receba um parâmetro e não retorne, você também pode usá-lo:

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 este caso criamos a classe da impressora, podemos usar o seu método imprimir como se fosse uma referência a uma expressão 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 Imprima a funcionalidade da impressora:

Impressão de referência de método Java 8

Deixe uma resposta

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