What is a Constructor Reference in Java?
Introduced as part of Java 8, Constructor Reference is a concept that can only be utilized within the context of Functional Interfaces. This technique enables us to reference pre-defined constructors and assign them to the desired type of Functional Interface without actually instantiating the class. In essence, Constructor Reference allows us to refer to constructors in a way that avoids instantiation.
Syntax
Example 1:
@FunctionalInterface interface MyInterface { Message send(String message); } class Message { public Message(String message) { System.out.println(message); } } class Test { public static void main(String[] args) { MyInterface myInterface = Message::new; myInterface.send("Hello!"); } }
Output: Hello!
Here, we passed the string Hello! as a parameter to the send() function, and that parameter gets forwarded to the constructor, which accepts the string as a parameter.
Example 2:
Let’s update the class Message by adding two more constructors:
class Message { public Message(String message) { System.out.println(message); } public Message(String message1, String message2) { System.out.println(message1 + message2); } public Message(String message1, String message2, String message3) { System.out.println(message1 + message2 + message3); } }
Now, to refer to the constructor that accepts two parameters with Constructor Reference, we need to define the corresponding method inside the Functional interface.
@FunctionalInterface interface MyInterface { Message send(String message1, String message2); }
Let’s implement the main method and execute the program:
class Test { public static void main(String[] args) { MyInterface myInterface = Message::new; myInterface.send("Hello ", "World!"); } }
Output: Hello World!
We called the send() method that accepts two parameters, and the corresponding constructor got invoked.
I hope this tutorial was helpful to you. To learn more, check out other Java Functional Programming tutorials.