Method References (phương thức tham chiếu) trong Java 8
Ở bài trước mình đã giới thiệu cách sử dụng lambda expressions rồi, vậy thì bài này ta sẽ bàn về một vấn đề có liên quan mật thiết, đó là phương thức tham chiếu (Method References).
1. Method References trong Java là gì?
Method References còn được gọi là phương thức tham chiếu, là tính năng được thêm vào trong Java 8. Nó liên quan mật thiết đến lambda expression, cung cấp cú pháp để truy cập đến các hàm khởi tạo constructor hoặc những method của class mà không cần phải khởi tạo chúng, thậm chí bạn cũng có thể sử dụng để gọi method từ các đối tượng object đã khởi tạo.
Giả sử ta có một lambda expression như sau:
str -> System.out.println(str)
Thì chúng ta có thể viết lại bằng cách sử dụng Method references.
Bài viết này được đăng tại [free tuts .net]
System.out::println
Chúng ta có 4 kiểu gọi tham chiếu như sau:
- Tham chiếu đến một instance method của một đối tượng -
object :: instanceMethod
- Tham chiếu tới static method của một lớp -
Class :: staticMethod
- Tham chiếu đến một instance method của một đối tượng tùy ý của một kiểu cụ thể -
Class :: instanceMethod
- Tham chiếu đến một phương thức khởi tạo -
Class :: new
2. Các ví dụ về Method References trong Java
Ví dụ 1: Tham chiếu đến một instance method của object
@FunctionalInterface interface MyInterface{ void display(); } public class Example { public void myMethod(){ System.out.println("Instance Method"); } public static void main(String[] args) { Example obj = new Example(); // Method reference using the object of the class MyInterface ref = obj::myMethod; // Calling the method of functional interface ref.display(); } }
Kết quả:
Instance Method
Ví dụ 2: Tham chiếu đến static method của class
import java.util.function.BiFunction; class Multiplication{ public static int multiply(int a, int b){ return a*b; } } public class Example { public static void main(String[] args) { BiFunction<Integer, Integer, Integer> product = Multiplication::multiply; int pr = product.apply(11, 5); System.out.println("Product of given number is: "+pr); } }
Kết quả:
Product of given number is: 55
Ví dụ 3: Tham chiếu đến instance method của một đối tượng tùy ý của một kiểu cụ thể
import java.util.Arrays; public class Example { public static void main(String[] args) { String[] stringArray = { "Steve", "Rick", "Aditya", "Negan", "Lucy", "Sansa", "Jon"}; /* Method reference to an instance method of an arbitrary * object of a particular type */ Arrays.sort(stringArray, String::compareToIgnoreCase); for(String str: stringArray){ System.out.println(str); } } }
Kết quả:
Aditya Jon Lucy Negan Rick Sansa Steve
Ví dụ 4: Tham chiếu đến phương thức khởi tạo constructor
@FunctionalInterface interface MyInterface{ Hello display(String say); } class Hello{ public Hello(String say){ System.out.print(say); } } public class Example { public static void main(String[] args) { //Method reference to a constructor MyInterface ref = Hello::new; ref.display("Hello World!"); } }
Kết quả:
Hello World!
Trên là một số ví dụ về cách sử dụng Method reference trong Java.