java क्या हम एक इंटरफ़ेस का ऑब्जेक्ट बना सकते हैं?




interface anonymous-class (4)

test आउटपुट होना चाहिए। यह एक अज्ञात आंतरिक वर्ग का एक उदाहरण है।

यह बंदरगाह इंटरफ़ेस के साथ बंद होने के अनुकरण के रूप में उपयोग किया जाने वाला एक बहुत ही सामान्य पैटर्न है।

interface TestA {
    String toString();
}

public class Test {
    public static void main(String[] args) {
        System.out.println(new TestA() {
            public String toString() {
                return "test";
            }
        });
    }
}

इसका परिणाम क्या है?

एक परीक्षा
बी नल
सी रनटाइम पर एक अपवाद फेंक दिया जाता है।
डी संकलन लाइन 1 में त्रुटि के कारण विफल रहता है।
ई। संकलन लाइन 4 में त्रुटि के कारण विफल रहता है।
लाइन 5 में त्रुटि की वजह से एफ संकलन विफल रहता है।

इस सवाल का जवाब क्या है और क्यों? मेरे पास इस प्रश्न के बारे में एक और सवाल है। लाइन 4 में हम ए का ऑब्जेक्ट बना रहे हैं क्या इंटरफ़ेस का ऑब्जेक्ट बनाना संभव है?


जो आप यहां देख रहे हैं वह एक अज्ञात आंतरिक वर्ग है :

निम्नलिखित इंटरफ़ेस को देखते हुए:

interface Inter {
    public String getString();
}

आप इस तरह के उदाहरण की तरह कुछ बना सकते हैं:

Inter instance = new Inter() {
    @Override
    public String getString() { 
      return "HI"; 
    } 
  };

अब, आपके पास परिभाषित इंटरफ़ेस का एक उदाहरण है। लेकिन, आपको ध्यान रखना चाहिए कि आपने वास्तव में जो किया है वह एक वर्ग को परिभाषित किया गया है जो इंटरफ़ेस को लागू करता है और उसी समय कक्षा को तुरंत चालू करता है।


यह चाल बिल्कुल बेनामी आंतरिक वर्ग के बारे में नहीं है, यह प्रिंट परीक्षण यह है कि यह toString विधि को ओवरराइड करता है और System.out.println ऑब्जेक्ट को निहित करता है, यह कॉल करने के लिए यह स्ट्रिंग विधि है।


इसे भी आजमाएं ... बेनामी वर्ग का नाम उत्पन्न होता है!

Inter instance = new Inter() {
    public String getString(){ return "HI"+this.getClass(); }
};




anonymous-class