阅读新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());
}
Run Code Online (Sandbox Code Playgroud)
正如我们在该示例中所看到的,该driveVehicle方法需要一个Supplieras参数.为什么我们不把它改成期待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());
}
Run Code Online (Sandbox Code Playgroud)
使用有什么好处Supplier?
编辑:关于外行人Java 8供应商和消费者解释的问题的答案没有解释使用的好处Supplier.有评论询问,但没有回答.
这有什么好处而不是直接调用方法?是因为供应商可以像中间人那样行事并交出"回报"价值吗?
Mic*_*mlk 11
在上面的示例中,我不使用供应商.你正在Vehicle开车,而不是要求车辆.
但是要回答你的一般问题: