2012-03-02 24 views
7

आइए मान लें कि कुछ वर्ग पहुंच योग्य नहीं है, लेकिन एक और अज्ञात कक्षाएं जो कक्षा तक उत्पन्न होती हैं, से उत्पन्न होती हैं। कचरा कलेक्टर द्वारा पहली बार हटाया जा सकता है?जावा अज्ञात वर्ग और कचरा कलेक्टर

उदाहरण:


class Outer { 
    public Object getInner() { 
    return new Object() {}; 
    } 
} 

... 

Outer outer = new Outer(); 
Object inner = outer.getInner(); 

// Could the "outer" instance be removed here considering that "inner" is using below? 
+0

अपने कोड में आप 'बाहरी' कक्षा से एक विधि कॉल कर रहे हैं। संभवतः वहां पहुंचने योग्य क्या हो सकता है? – Marcelo

उत्तर

8

नहीं है, बाहरी उदाहरण अभी भी इस मामले में पहुंचा जा सकता है, क्योंकि हर गैर स्थिर भीतरी वर्ग इसकी बाहरी वर्ग उदाहरण के लिए एक अंतर्निहित rerefence है।

+0

अंतर यह है कि मेरे उदाहरण में अनाम वर्ग स्पष्ट रूप से बाहरी वर्ग के संदर्भ का उपयोग नहीं करता है (न तो आंतरिक रूप से और न ही बाहरी रूप से)। तो मुझे लगता है कि वास्तव में बाहरी वर्ग पहुंच योग्य नहीं है। –

+4

इसमें अभी भी संदर्भ है। और JVM यह जानने में असमर्थ है कि इस संदर्भ का कभी भी उपयोग नहीं किया जाएगा। यदि आप इस बाहरी संदर्भ का कभी भी उपयोग नहीं करते हैं, तो कक्षा एक स्थिर आंतरिक वर्ग या शीर्ष-स्तरीय कक्षा होनी चाहिए। –

+0

अब यह स्पष्ट हो जाता है। धन्यवाद! –

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