नए 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
उपयोग कर के लाभ की व्याख्या नहीं करता। इसके बारे में पूछने पर एक टिप्पणी है, लेकिन इसका उत्तर नहीं दिया गया था।
विधि को सीधे कॉल करने के बजाय इसका क्या फायदा है? क्या ऐसा इसलिए है क्योंकि प्रदायक एक मध्यस्थ की तरह कार्य कर सकता है और को "वापसी" मान बंद कर सकता है?
FWIW (शायद यह एक नया एक, शायद एक पुनर्नवीनीकरण एक, शायद एक आवरण, कौन जानता है हो जाएगा): 'driveVehicle (वाहन: : नया) ' – zeroflagL
क्या कोई प्रश्न के आखिरी हिस्से पर टिप्पणी कर सकता है - 'विधि को सीधे कॉल करने के बजाए इसका क्या फायदा है?'? – pMan
@pman प्रदायक उपयोगी है क्योंकि इसे केवल तभी लागू किया जाएगा जब आवश्यक हो। उदाहरण के लिए, यदि (हालत) {doStuff (supplier.get()); } – hbelmiro