Java 8 - Method reference
Phương thức tham chiếu cung cấp các cú pháp (syntax) hữu ích để truy cập trực tiếp tới các phương thức hoặc hàm dựng đã tồn tại của các lớp hoặc đối tượng trong Java. Với sự kết hợp của Lambda expression, phương thức tham chiếu làm cho cấu trúc ngôn ngữ trông nhỏ gọn và súc tích.
Ví dụ: Car class với các định nghĩa phương thức khác nhau
public static class Car {
public static Car create( final Supplier< Car > supplier ) {
return supplier.get();
}
public static void collide( final Car car ) {
System.out.println( "Collided " + car.toString() );
}
public void follow( final Car another ) {
System.out.println( "Following the " + another.toString() );
}
public void repair() {
System.out.println( "Repaired " + this.toString() );
}
}
Giải thích:
1. Tham chiếu hàm dựng
Loại thứ nhất của phương thức tham chiếu là hàm dựng tham chiếu với cú pháp Class::new
hoặc cách tổng quát, Class<T>::new
final Car car = Car.create(Car::new);
final List<Car> cars = Arrays.asList(car);
Chú ý rằng, hàm dựng này không có đối
2. Tham chiếu phương thức static
Loại thứ hai là tham chiếu tới phương thức static với cú pháp Class::staticMethod
cars.forEach(Car::collide);
Chú ý rằng, phương thức này chấp nhận chính xác tham số của Car
3. Tham chiếu phương thức instance của đối tượng tùy ý
Loại thức ba là tham chiếu tới phương thức instance của đối tượng tùy ý của loại cụ thể với cú pháp Class::method
cars.forEach(Car::repair);
Chú ý rằng, phương thức này có thể chấp nhận không có đối số
4. Tham chiếu phương thức instance của lớp instance
Loại thứ tư là tham chiếu tới phương thức instance của lớp instance cụ thể với cú pháp instance::method
final Car police = Car.create(Car::new);
cars.forEach(police::follow);
Chú ý rằng, phương thức này chấp nhận chính xác tham số của Car
Kết quả:
Collided vn.laptrinh.Car@36baf30c
Repaired vn.laptrinh.Car@36baf30c
Following the vn.laptrinh.Car@36baf30c
No Comments