Чтение о новом интерфейсе Supplier
Я не вижу никакого преимущества от его использования. Мы можем видеть ниже пример.В чем преимущество использования Поставщика на 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());
}
Как мы можем видеть в этом примере, метод driveVehicle
ожидает Supplier
в качестве аргумента. Почему бы нам просто не изменить его, чтобы ожидать 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());
}
В чем преимущество использования Supplier
?
EDIT: Ответы на вопрос Java 8 Supplier & Consumer explanation for the layperson не объясняет преимущества использования Supplier
. Есть комментарий, спрашивающий об этом, но на него не ответил.
В чем преимущество этого, а не вызов метода напрямую? Это потому, что Поставщик может действовать как посредник и передавать , что означает «возврат»?
FWIW: 'driveVehicle (Vehicle: : new) ' – zeroflagL
Может кто-нибудь прокомментировать последнюю часть вопроса -« В чем преимущество этого, а не вызов метода напрямую? »? – pMan
Поставщик @pMan полезен, поскольку он будет вызываться только тогда, когда и при необходимости. Например, если (условие) {doStuff (поставщик.get()); } – hbelmiro