Đọc về giao diện Supplier
mới Tôi không thể thấy bất kỳ lợi thế nào về việc sử dụng nó. Chúng ta có thể thấy dưới đây là một ví dụ về nó.Ưu điểm của việc sử dụng Nhà cung cấp trong Java là gì?
class Vehicle{
public void drive(){
System.out.println("Driving vehicle ...");
}
}
class Car extends Vehicle{
@Override
public void drive(){
System.out.println("Driving car...");
}
}
public class SupplierDemo {
static void driveVehicle(Supplier<? extends Vehicle> supplier){
Vehicle vehicle = supplier.get();
vehicle.drive();
}
}
public static void main(String[] args) {
//Using Lambda expression
driveVehicle(()-> new Vehicle());
driveVehicle(()-> new Car());
}
Như chúng ta có thể thấy trong ví dụ rằng, phương pháp driveVehicle
hy vọng một Supplier
như là đối số. Tại sao chúng ta không thay đổi nó để mong đợi một Vehicle
?
public class SupplierDemo {
static void driveVehicle(Vehicle vehicle){
vehicle.drive();
}
}
public static void main(String[] args) {
//Using Lambda expression
driveVehicle(new Vehicle());
driveVehicle(new Car());
}
Lợi thế của việc sử dụng Supplier
là gì?
EDIT: Câu trả lời cho câu hỏi Java 8 Supplier & Consumer explanation for the layperson không giải thích được lợi ích của việc sử dụng Supplier
. Có một bình luận hỏi về nó, nhưng nó không được trả lời.
Lợi ích của việc này thay vì gọi phương thức trực tiếp là gì? Có phải vì Nhà cung cấp có thể hoạt động như một người trung gian và giao giá trị "trả lại" đó?
FWIW: 'driveVehicle (Vehicle: : mới) ' – zeroflagL
Ai đó có thể nhận xét về phần cuối của câu hỏi - 'Lợi ích của việc này thay vì gọi phương thức trực tiếp là gì?'? – pMan
@pMan Nhà cung cấp là hữu ích vì nó sẽ được gọi chỉ khi nào và nếu cần thiết. Ví dụ, nếu (điều kiện) {doStuff (supplier.get()); } – hbelmiro