Lettura sulla nuova interfaccia Supplier
Non riesco a vedere alcun vantaggio del suo utilizzo. Possiamo vedere qui sotto un esempio.Qual è il vantaggio dell'utilizzo del Fornitore in Java?
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());
}
Come si può vedere in questo esempio, il metodo driveVehicle
aspetta una Supplier
come argomento. Perché non lo cambiamo semplicemente per aspettarci un 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());
}
Qual è il vantaggio di utilizzare Supplier
?
EDIT: Le risposte sulla questione Java 8 Supplier & Consumer explanation for the layperson non spiega i vantaggi di utilizzare Supplier
. C'è un commento che chiede, ma non è stata data risposta.
Qual è il vantaggio di questo anziché chiamare direttamente il metodo? È perché il Fornitore può agire come un intermediario e consegnare che il valore "restituisce"?
FWIW: 'driveVehicle (Veicolo: : new) ' – zeroflagL
Qualcuno può commentare l'ultima parte della domanda: 'Qual è il vantaggio di questo piuttosto che chiamare direttamente il metodo?'? – pMan
@pMan Il fornitore è utile perché verrà richiamato solo quando e se necessario. Ad esempio, if (condition) {doStuff (supplier.get()); } – hbelmiro