Java 8 introduced a new feature called Method Reference, which allows you to refer to methods or constructors without invoking them. It is a shorthand notation for lambda expressions to improve code readability.
There are four types of method references:
Reference to a static method: ContainingClass::staticMethodName
Example: Math::max
Reference to an instance method of a particular object: containingObject::instanceMethodName
Example: System.out::println
Reference to an instance method of an arbitrary object of a particular type: ContainingType::methodName
Example: String::length
Reference to a constructor: ClassName::new
Example: ArrayList::new
Method references can make your code more concise and readable, especially when used with functional interfaces. They are often used in stream operations and can greatly simplify lambda expressions.