Java 8 introduced a new feature “Method Reference” which is used to refer the methods of functional interfaces. It is a shorthand notation of a lambda expression to call a method. We can replace lambda expression with method reference (:: operator) to separate the class or object from the method name.
Types of method references
| Type | Syntax | Example | 
| Reference to a static method | Class::staticMethodName | String::valueOf | 
| Reference to an instance method | object::instanceMethodName | x::toString | 
| Reference to a constructor | ClassName::new | String::new | 
Lambda expression and Method references:
| Type | As Method Reference | As Lambda | 
| Reference to a static method | String::valueOf | (s) -> String.valueOf(s) | 
| Reference to an instance method | x::toString | () -> “w3schools”.toString() | 
| Reference to a constructor | String::new | () -> new String() | 
Method reference to a static method of a class
package com.w3schools;
public class MethodReference {
	    public static void ThreadStatus(){  
	        System.out.println("Thread is running...");  
	    }  
	    public static void main(String[] args) {  
	        Thread t2=new Thread(MethodReference::ThreadStatus);  
	        t2.start();       
	    }  
}
Output
Thread is running...
Method reference to an instance method of an object
package com.w3schools;
@FunctionalInterface  
interface DisplayInterface{  
    void display();  
}  
public class MethodReference {
	public void sayHello(){  
		System.out.println("Hello Jai");  
	}  
	public static void main(String args[]){
		MethodReference methodReference = new MethodReference();
		// Method reference using the object of the class
		DisplayInterface displayInterface = methodReference::sayHello;
		// Calling the method of functional interface
		displayInterface.display();
	}
}
Output
Hello Jai
Method reference to a constructor
package com.w3schools;
@FunctionalInterface 
interface DisplayInterface{  
    Hello display(String say);  
}  
class Hello{  
    public Hello(String say){  
        System.out.print(say);  
    }  
}  
public class MethodReference {  
    public static void main(String[] args) { 
    	//Method reference to a constructor
    	DisplayInterface ref = Hello::new;  
        ref.display("Hello w3schools");  
    }  
}
Output
Hello w3schools