2015-08-07 8 views
5

मैं अजीब वाक्य रचना नीचे भर में आ गए हैं, मैं ऐसे टुकड़ा कभी नहीं देखा है, है ना आवश्यकता लेकिन उत्सुक इसे समझने की हैजावा अजीब वाक्य रचना - (बेनामी उप-वर्ग)

new Object() { 
    void hi(String in) { 
     System.out.println(in); 
    } 
}.hi("strange"); 

कोड से ऊपर strange के रूप में उत्पादन देता है

धन्यवाद

उत्तर

9

आप बना लिया है Object के anonymous sub-class है, जो एक विधि का परिचय है, hi, जिसके बाद आप पैरामीटर "strange" के साथ इस विधि आह्वान कहा जाता है।

मान लें कि आप था दो:

class NamedClass extends Object { 
    void hi(String in) { System.out.println(in); } 
} 

NamedClass instance = new NamedClass(); 
instance.hi("strange"); 

इस वर्ग वास्तव में एक स्थान पर की जरूरत थी, तो वहाँ नामित होने के और इतने पर का कोई वास्तविक जरूरत है - यह एक गुमनाम वर्ग बनाकर, आप इसके नाम से छुटकारा पाने के , वर्ग को परिभाषित और तत्काल प्राप्त किया जाता है और hi विधि को एक अभिव्यक्ति के भीतर तुरंत बुलाया जाता है।

0

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

0

आपने ऑब्जेक्ट का एक बेनामी उप-वर्ग बनाया है और फिर विधि का आह्वान किया है। गुमनाम आंतरिक वर्ग के चार प्रकार मौजूद है: -

1)Inner class, 
2)Static nested classes 
3)Method local inner classes 
4)Anonymous inner classes 

annonymous इनर क्लासों में, आप को परिभाषित का दृष्टांत और है कि आंतरिक वस्तु तो उपयोग कर सकते हैं और वहाँ

संबंधित मुद्दे