Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में नेस्टेड इंटरफेस (Nested Interface)


हम किसी अन्य इंटरफेस या क्लास के अंदर एक इंटरफेस घोषित कर सकते हैं। ऐसे इंटरफेस को नेस्टेड इंटरफेस (Nested Interface) कहा जाता है।

नेस्टेड इंटरफेस को नियंत्रित करने वाले निम्नलिखित नियम हैं:

  • एक इंटरफेस के भीतर घोषित नेस्टेड इंटरफेस public होना चाहिए।
  • एक क्लास के भीतर घोषित नेस्टेड इंटरफेस का कोई भी एक्सेस मॉडिफायर हो सकता है।
  • एक नेस्टेड इंटरफेस डिफ़ॉल्ट रूप से static होता है।

उदाहरण

class Animal {
    interface Activity {
        void move();
    }
}

class Dog implements Animal.Activity {
    public void move() {
        System.out.println("Dogs can walk and run");
    }
}

public class Tester {
    public static void main(String args[]) {
        Dog dog = new Dog();
        dog.move();
    }
}

आउटपुट

Dogs can walk and run

नेस्टेड इंटरफेस के प्रकार

1. इंटरफेस के अंदर इंटरफेस (Interface inside Interface)

interface OuterInterface {
    // अंतर्निहित रूप से public static
    interface InnerInterface {
        void innerMethod();
    }
    
    void outerMethod();
}

// उपयोग
class Implementation implements OuterInterface.InnerInterface {
    public void innerMethod() { ... }
}

2. क्लास के अंदर इंटरफेस (Interface inside Class)

class OuterClass {
    // कोई भी एक्सेस मॉडिफायर संभव
    private interface PrivateInterface { void doSomething(); }
    protected interface ProtectedInterface { void doSomething(); }
    public interface PublicInterface { void doSomething(); }
    
    // आंतरिक उपयोग के लिए प्राइवेट इंटरफेस
    private PrivateInterface createImplementation() {
        return new PrivateInterface() {
            public void doSomething() { ... }
        };
    }
}

// उपयोग (यदि public)
class External implements OuterClass.PublicInterface {
    public void doSomething() { ... }
}

नेस्टेड इंटरफेस के उपयोग

  • नेमस्पेसिंग: संबंधित इंटरफेस समूहित करना (Map.Entry, Node.ListNode)
  • एनकैप्सुलेशन: आंतरिक अनुबंध छिपाना (private/protected इंटरफेस)
  • लॉजिकल ग्रुपिंग: क्लास/इंटरफेस से संबंधित कॉन्ट्रैक्ट्स को साथ रखना

प्रसिद्ध उदाहरण: Map.Entry

public interface Map {
    // नेस्टेड इंटरफेस
    interface Entry {
        K getKey();
        V getValue();
        V setValue(V value);
    }
    
    // ...
}

// उपयोग
Map map = new HashMap<>();
for (Map.Entry entry : map.entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue());
}

महत्वपूर्ण नियम सारांश

संदर्भअनुमत मॉडिफायर्सअंतर्निहित मॉडिफायर्स
इंटरफेस में इंटरफेसpublic (केवल)static, abstract
क्लास में इंटरफेसpublic, protected, default, privatestatic

निष्कर्ष: नेस्टेड इंटरफेस संबंधित अनुबंधों को तार्किक रूप से समूहित करने, एनकैप्सुलेशन प्रदान करने और नेमस्पेस प्रबंधन में मदद करते हैं। वे डिफ़ॉल्ट रूप से static होते हैं। Map.Entry Java API में सबसे प्रसिद्ध उदाहरण है।

  1. Java में JsonPatch इंटरफेस का महत्व क्या है? Java में JsonPatch इंटरफेस का महत्व क्या है?

    JsonPatch इंटरफेस एक प्रारूप है जो ऑपरेशन के अनुक्रम को संग्रहीत करता है जिसे लक्ष्य JSON संरचना पर लागू किया जा सकता है। add, remove, replace, copy, move और test जैसे कुछ ऑपरेशन JsonPatch में संग्रहीत किए जा सकते हैं और JSON संरचना पर संचालित किए जा सकते हैं। JsonPatchBuilder इंटरफेस का उपयोग Json.

  1. - Java 8 में इंटरफेस संवर्द्धन (Interface Enhancements)

    Java 8 इंटरफेस में डिफ़ॉल्ट मेथड कार्यान्वयन की एक नई अवधारणा पेश करता है। यह क्षमता बैकवर्ड कम्पैटिबिलिटी के लिए जोड़ी गई है ताकि पुराने इंटरफेस Java 8 की लैम्ब्डा एक्सप्रेशन क्षमता का लाभ उठा सकें। उदाहरण के लिए, List या Collection इंटरफेस में forEach मेथड डिक्लेरेशन नहीं है। इस तरह के मेथड को ज

  1. - Java में इंटरफेस (Interface)

    एक इंटरफेस Java में एक रेफरेंस टाइप है। यह एक क्लास के समान है। यह एब्स्ट्रैक्ट मेथड्स का एक संग्रह है। एक क्लास इंटरफेस को इम्प्लीमेंट करती है, जिससे इंटरफेस के एब्स्ट्रैक्ट मेथड्स विरासत में मिलते हैं। एब्स्ट्रैक्ट मेथड्स के साथ, एक इंटरफेस में कॉन्स्टेंट्स, डिफ़ॉल्ट मेथड्स, स्टेटिक मेथड्स, और न