En el tutorial anterior aprendimos las expresiones lambda en Java 8. Aquí discutiremos otra característica nueva de Java 8, referencia al método. La referencia al método es una notación abreviada de una expresión lambda para llamar a un método. Por ejemplo:
Si su expresión lambda se ve así:

str -> System.out.println(str)

entonces puedes reemplazarlo con un método de referencia como este:

System.out::println

El operador :: se usa en la referencia del método para separar la clase u objeto del nombre del método (aprenderemos esto con la ayuda de ejemplos).

Cuatro tipos de referencias de métodos

1. Método para hacer referencia a un método de instancia de objeto – object :: instanceMethod
2. Referencia de método a un método estático de una clase – Class :: staticMethod
3. Referencia de método a un método de instancia de un objeto arbitrario de un tipo particular – Class :: instanceMethod
4. Método de referencia a un constructor – Class :: new

1. Referencia de método a un método de instancia de objeto

@FunctionalInterface 
interface MyInterface{  
    void display();  
}  
public class Example {  
    public void myMethod(){  
	System.out.println("Instance Method");  
    }  
    public static void main(String[] args) {  
	Example obj = new Example();   
	// Method reference using the object of the class
	MyInterface ref = obj::myMethod;  
	// Calling the method of functional interface  
	ref.display();  
    }  
}

Producción:

Instance Method

2. Referencia de método a un método estático de una clase

import java.util.function.BiFunction;  
class Multiplication{  
   public static int multiply(int a, int b){  
	return a*b;  
   }  
}  
public class Example {  
   public static void main(String[] args) {  
	BiFunction<Integer, Integer, Integer> product = Multiplication::multiply;  
	int pr = product.apply(11, 5);  
	System.out.println("Product of given number is: "+pr);  
   }  
}

Producción:

Product of given number is: 55

3. Referencia de método a un método de instancia de un objeto arbitrario de un tipo particular

import java.util.Arrays;
public class Example {  

   public static void main(String[] args) {  
	String[] stringArray = { "Steve", "Rick", "Aditya", "Negan", "Lucy", "Sansa", "Jon"};
	/* Method reference to an instance method of an arbitrary 
	 * object of a particular type
	 */
	Arrays.sort(stringArray, String::compareToIgnoreCase);
	for(String str: stringArray){
		System.out.println(str);
	}
   }  
}

Producción:

Aditya
Jon
Lucy
Negan
Rick
Sansa
Steve

4. Método de referencia a un fabricante

@FunctionalInterface 
interface MyInterface{  
    Hello display(String say);  
}  
class Hello{  
    public Hello(String say){  
        System.out.print(say);  
    }  
}  
public class Example {  
    public static void main(String[] args) { 
    	//Method reference to a constructor
        MyInterface ref = Hello::new;  
        ref.display("Hello World!");  
    }  
}

Producción:

Hello World!
leer  Java 8 Stream - ejemplo allMatch ()

Por avivcas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *