阅读新的Supplier
界面我看不出它的用法有什么好处。
我们可以看到它的一个例子。
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
有什么好处?
编辑:问题Java 8 Supplier & Consumer explanation for the layperson的答案并未解释使用Supplier
的好处。
有评论询问,但没有回答。
这有什么好处而不是直接调用方法? 是因为供应商可以像中间人那样行事并交出来 “返回”值?
答案 0 :(得分:10)
在上面的示例中,我不使用供应商。您正在驾驶Vehicle
驾驶,而不是请求车辆。
但是要回答你的一般问题: