जावा में एक कार्यात्मक इंटरफ़ेस एक इंटरफ़ेस है जिसमें बिल्कुल एक सार विधि होती है। यह एकल-विधि बाधा कार्यात्मक इंटरफेस को लैम्ब्डा अभिव्यक्तियों और विधि संदर्भों के लिए लक्ष्य प्रकार के रूप में उपयोग करने की अनुमति देती है।
कार्यात्मक इंटरफेस में बिल्कुल एक अमूर्त विधि होनी चाहिए। यह उन्हें लैम्ब्डा एक्सप्रेशन के साथ उपयोग के लिए आदर्श बनाता है, जो कार्यात्मक प्रोग्रामिंग को सक्षम करने के लिए जावा 8 में पेश की गई एक प्रमुख विशेषता है।
यहां कार्यात्मक इंटरफ़ेस का एक त्वरित उदाहरण दिया गया है:
@FunctionalInterface public interface MyFunctionalInterface { void performAction(); }
इस उदाहरण में, MyFunctionalInterface एक कार्यात्मक इंटरफ़ेस है क्योंकि इसमें केवल एक सार विधि, performAction() शामिल है।
लैम्ब्डा एक्सप्रेशन कार्यात्मक इंटरफेस को लागू करने का एक संक्षिप्त तरीका प्रदान करते हैं। वे अज्ञात वर्ग कार्यान्वयन की आवश्यकता को समाप्त करते हैं, जिससे कोड अधिक पठनीय और कॉम्पैक्ट हो जाता है।
यहां बताया गया है कि आप MyFunctionalInterface इंटरफ़ेस के साथ लैम्ब्डा एक्सप्रेशन का उपयोग कैसे कर सकते हैं:
public class Main { public static void main(String[] args) { MyFunctionalInterface action = () -> System.out.println("Action performed!"); action.performAction(); } }
इस कोड स्निपेट में, लैम्ब्डा एक्सप्रेशन () -> System.out.println("क्रिया निष्पादित!") MyFunctionalInterfaceperformAction विधि लागू करता है ].
2. हमें कार्यात्मक इंटरफेस की आवश्यकता क्यों है?2.1 लैम्ब्डा एक्सप्रेशंस के साथ कोड को सरल बनाना
उदाहरण के लिए, संख्याओं की सूची को फ़िल्टर करने के लिए एक कार्यात्मक इंटरफ़ेस का उपयोग करने पर विचार करें:
import java.util.Arrays; import java.util.List; import java.util.function.Predicate; public class Main { public static void main(String[] args) { Listइस उदाहरण में,numbers = Arrays.asList(1, 2, 3, 4, 5); Predicate isEven = n -> n % 2 == 0; numbers.stream() .filter(isEven) .forEach(System.out::println); } }
Predicate एक एकल अमूर्त विधि test() के साथ एक कार्यात्मक इंटरफ़ेस है। लैम्ब्डा एक्सप्रेशन n -> n % 2 == 0 इस विधि के लिए कार्यान्वयन प्रदान करता है, जिससे हमें सूची से सम संख्याओं को फ़िल्टर करने की अनुमति मिलती है।
2.2 बढ़ी हुई पठनीयता और रख-रखावउदाहरण के लिए, लैम्ब्डा अभिव्यक्तियों के बिना, किसी सूची को फ़िल्टर करने में अनाम कक्षाओं के साथ वर्बोज़ कोड लिखना शामिल हो सकता है:
import java.util.Arrays; import java.util.List; import java.util.function.Predicate; public class Main { public static void main(String[] args) { Listउपर्युक्त कोड एक ही परिणाम प्राप्त करता है लेकिन लैम्ब्डा अभिव्यक्तियों के साथ स्ट्रीम एपीआई उदाहरण की तुलना में अधिक क्रियात्मक और पढ़ने में कठिन है।numbers = Arrays.asList(1, 2, 3, 4, 5); Predicate isEven = n -> n % 2 == 0; numbers.stream() .filter(isEven) .forEach(System.out::println); } }
3. निष्कर्ष
पर अधिक पोस्ट पढ़ें: जावा में कार्यात्मक इंटरफेस को समझना: वे क्यों मायने रखते हैं और उनका उपयोग कैसे करें
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3