在Java中使用Supplier有什么好处?

阅读有关新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 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的好处。 有评论询问,但没有回答。

这有什么好处而不是直接调用方法? 是因为供应商可以像中间人那样行事,并交出“回报”价值吗?

在上面的示例中,我不使用供应商。 您正在驾驶Vehicle而不是请求车辆。

但是要回答你的一般问题:

  • 因为建造汽车很昂贵,我们不想这样做,直到我们确实需要。
  • 因为我们希望X车不只是一辆。
  • 因为建造汽车的时间很重要。
  • 因为施工很复杂所以我们想把它包起来。
  • 因为我们在返回之前不知道要返回哪辆车(也许它会是新车,也许是回收车,也许是包装纸,谁知道)