This source code example demonstrates the usage of Java method reference to a constructor.
Well, a Java method reference to a constructor is a type of method reference introduced in Java 8.
Method reference is used to refer method of the functional interface. It is a compact and easy form of a lambda expression.
You can refer to a constructor by using the new keyword. In this example, we are referring constructor with the help of a functional interface.Syntax of method reference to a constructor
ClassName::new
Java method reference to a constructor example 1
Let's create an example that converts List into Set using Lambda expression and then converts Lambda expression into method reference:
package com.java.lambda.methodref; import java.util.*; import java.util.function.Function; public class MethodReferencesDemo { public static void main(String[] args) { // 4. reference to a constructor List<String> fruits = new ArrayList<>(); fruits.add("Banana"); fruits.add("apple"); fruits.add("mango"); fruits.add("watermelon"); Function<List<String>, Set<String>> setFunction = (fruitsList) -> new HashSet<>(fruitsList); System.out.println(setFunction.apply(fruits)); // using method reference Function<List<String>, Set<String>> setFunctionMethodRef = HashSet::new; System.out.println(setFunctionMethodRef.apply(fruits)); } }
Lambda expression:
Function<List<String>, Set<String>> setFunction = (fruitsList) -> new HashSet<>(fruitsList); System.out.println(setFunction.apply(fruits));
Method reference:
// using method reference Function<List<String>, Set<String>> setFunctionMethodRef = HashSet::new; System.out.println(setFunctionMethodRef.apply(fruits));
Output:
[apple, watermelon, Banana, mango]
[apple, watermelon, Banana, mango]
Java method reference to a constructor example 2
The below example demonstrates the usage of method reference to the constructor.
public class ReferenceToConstructor {
public static void main(String[] args) {
Messageable hello = Message::new;
hello.getMessage("Hello");
}
}
interface Messageable{
Message getMessage(String msg);
}
class Message{
Message(String msg){
System.out.print(msg);
}
}