Method references in Java provide a way to refer to methods
or constructors
without invoking them explicitly. They can be thought of as a shorthand for writing simple lambda expressions.
Majorly method referencing can either be static or related to an instance:
Integer::sum;
System.out::println;
These are examples of static method references (also known as bound referencing).
However, consider this:
String::concat
Here, concat
is not a static method, so how is this working? This is an example of unbound referencing. The compiler understands that this is an instance method reference based on how our code is written. This makes it possible to simplify method calls like this.
The way we write our code determines these types of references (especially unbound ones). Taking concat
as an example:
((a, b) -> a + b, "Hello", "World");
// ----------------Is same as -------------
((a, b) -> a.concat(b), "Hello", "World"); // This one could be replaced by mehod referencing
// ----------------Alternative-------------
(String::concat, "Hello", "World");
/* The use of 'a' as the first parameter and calling `concat `of 'a' itself
gives the compiler an idea of how it should decode `String::concat`*/
So, instead of writing out a full lambda, we can simplify with a method reference.
Keep Learning š
Top comments (0)