在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车不只是一辆。
- 因为建造汽车的时间很重要。
- 因为施工很复杂所以我们想把它包起来。
- 因为我们在返回之前不知道要返回哪辆车(也许它会是新车,也许是回收车,也许是包装纸,谁知道)