新しい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
を使用する利点は何ですか?
編集:質問Java 8 Supplier & Consumer explanation for the laypersonの回答では、Supplier
を使用する利点については説明していません。 コメントはありますが、回答はありませんでした。
このメソッドを直接呼び出すのではなく、どのような利点がありますか? サプライヤが仲介者のように行動し、 "返品"という値を に渡すことができるからですか?
FWIW: 'driveVehicle(ビークル: :new) ' – zeroflagL
誰かが質問の最後の部分にコメントすることができますか? 'メソッドを直接呼び出すのではなく、これのメリットは何ですか?' – pMan
@pMan Supplierは、必要なときにのみ呼び出されるため、便利です。たとえば、if(condition){doStuff(supplier.get()); } – hbelmiro