Java 8 Metoda de referință este unul dintre conceptele care vin cu noile expresii lambda care vin în JDK 8, o vom explica pas cu pas. Până în acest moment în Java au existat două concepte, clase și interfețe fundamentale.
cu ea sosește Java 8 expresiuni lambda apar:
Aceste expresii ne permit deja o reutilizare mai mare a codului nostru deja Din clasele de reutilizare putem pur și simplu reutiliza funcțiile. Acestea sunt convertite pentru a le pune într-un fel în unitatea de cod minim. Pentru ca Java să integreze aceste concepte, trebuie să presupunem că concesii trebuie să fie concesionare, deoarece Java permite numai gestionarea claselor și interfețelor. Astfel, expresii lambda vin să fie interfețe care susțin doar o metodă abstractă. În Java 8 există multe dintre aceste interfețe predefinite. Pentru a aborda exemplul nostru, vom sprijini interfața consumatorului < care are o singură metodă numită Accept care primește un parametru și nu returnează nimic. Este una dintre cele mai simple interfețe funcționale.
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");}}
În acest caz am atribuit consumatorului interfață funcțională o expresie lambda care se potrivește cu ea. Amintiți-vă că interfața primește un parametru și nu returnează nimic, rezultatul va tipări Bună ziua de consolă:
Este posibil să vrem să avem o flexibilitate mai mare în codul nostru și să ne sprijinim într-o metodă care ne permite să modificăm expresia lambda și textul pe care îl imprimăm.
DIV ID = „59A96CD7EC”>
Rezultatul va fi similar:
Java 8 Metoda de referință
Acum, expresii lambda vă permit să adăugați mai multă flexibilitate la cod. De exemplu, putem avea o altă metodă imprimată în aceeași clasă care respectă modelul expresiei lambda (primește un parametru și nu returnează nimic).
Putem folosi sintaxa Metoda de referință Java 8 pentru a invoca procesul Procesul de susținere în această nouă funcție.
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("---------");}}
După cum puteți vedea că am folosit sintaxa principală :: tipărirea pentru a merge ca referință o funcție care este în noi Program propriu.
Consola va afișa:
Aceasta va aduce o mare flexibilitate la metoda de când avem o altă clasă care are o metodă care primește un parametru și nu vă întoarceți, puteți, de asemenea, puteți utiliza:
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 Acest caz am creat clasa imprimantei, putem folosi metoda dvs. de imprimare ca și cum ar fi o referire la o expresie lambda.
Programul principal va fi Imprimați funcționalitatea imprimantei: