06/04/2021, 14:47

Method References (phương thức tham chiếu) trong Java 8 - ính năng mới 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 ...

Ở 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.

System.out::println

Chúng ta có 4 kiểu gọi tham chiếu như sau:

  1. Tham chiếu đến một instance method của một đối tượng - object :: instanceMethod
  2. Tham chiếu tới static method của một lớp - Class :: staticMethod
  3. 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
  4. 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.

Bài tiếp
0