Method Reference in Java is a concept introduced as part of Java 8, and its purpose is to simplify the implementation of the Functional interfaces. When you use a Lambda expression to refer to a method, you can replace your Lambda with a Method Reference. We have already covered Lambda Expressions in Java 8.
There are three types of method references:
- Reference to an instance method.
- Reference to a static method.
- Reference to a constructor.
1. Reference to an instance method
Syntax
Example
Let’s first see how we can implement a Functional interface using a Lambda expression:
@FunctionalInterface interface Drawable { void draw(); } class Test { public void drawCircle() { System.out.println("Drawing circle..."); } public static void main(String[] args) { Test test = new Test(); Drawable drawable = () -> test.drawCircle(); drawable.draw(); } }
Output: Drawing circle…
Now, let’s replace Lambda with a Method Reference:
@FunctionalInterface interface Drawable { void draw(); } class Test { public void drawCircle() { System.out.println("Drawing circle..."); } public static void main(String[] args) { Test test = new Test(); Drawable drawable = test::drawCircle; drawable.draw(); } }
Output: Drawing circle…
You see how the Method reference is a shortcut to writing Lambda expression.
2. Reference to a static method
Syntax
Example
Let’s make a drawCircle() method static, and use the class name to refer to it:
@FunctionalInterface interface Drawable { void draw(); } class Test { public static void drawCircle() { System.out.println("Drawing circle..."); } public static void main(String[] args) { Drawable drawable = Test::drawCircle; drawable.draw(); } }
Output: Drawing circle…
In the next lesson, we will cover the Constructor Reference in Java.
I hope this tutorial was helpful to you. To learn more, check out other Java Functional Programming tutorials.