2012-08-20 24 views
9

क्या यह मुख्य श्रेणी के चरों तक पहुंचने के लिए घोंसला वाले आंतरिक वर्गों अबर और बीबर के लिए संभव है? उदाहरण के लिए:जावा घोंसला वाले आंतरिक वर्ग का उपयोग बाहरी वर्ग चर

public class Foo { 
    public ABar abar = new ABar(); 
    public BBar bbar = new BBar(); 
    public int someCounter = 0; 

    public class ABar { 
     public int i = 0; 
     public void someMethod(){ 
      i++; 
      someCounter++; 
     } 
    } 

    public class BBar { 
     public void anotherMethod(){ 
      bbar.someMethod(); 
      someCounter++; 
     } 
    } 
} 
// then called using: // 
Foo myFoo = new Foo(); 
myFoo.bbar.anotherMethod(); 

संपादित

लगता है अगर मैं यह पहली बार कोशिश की है चाहते हैं कोड मैं टाइप किया काम होते थे; बहुत विशिष्ट होने के बिना मदद पाने की कोशिश कर रहा था। कोड

साथ मैं वास्तव में समस्या हो रही है त्रुटि के कारण विफल

public class Engine { 
    public Stage stage = new Stage(); 
     // ... 
    public class Renderer implements GLSurfaceView.Renderer { 
     // ... 
     @Override 
     public void onDrawFrame(GL10 gl) { 
      stage.alpha++; 
     } 
    } 

    public class Stage extends MovieClip { 
     public float alpha = 0f; 
    } 
+12

क्या आपने इसे आजमाया? –

+1

http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html –

+0

मैंने इसे ठीक तरह से टाइप नहीं किया है, क्योंकि मेरी परियोजना एंड्रॉइड आधारित है - एक ही तर्क है, काम नहीं करता है (नहीं फू का उदाहरण संलग्न) 'Foo.this.i ++;' – TerryProbert

उत्तर

18

'गैर स्थिर क्षेत्र चरण के लिए स्थिर संदर्भ नहीं कर सकता' अपने कोड में, हाँ, यह संभव है।

गैर स्थिर नेस्टेड वर्गों (भीतरी वर्ग) संलग्नित क्लास के अन्य सदस्यों के लिए उपयोग, भले ही वे निजी घोषित कर रहे हैं। स्टेटिक घोंसला वाले वर्गों को कक्षा के अन्य सदस्यों तक पहुंच नहीं है।

देखें: Nested Classes

+3

बनाना चाहिए यदि आपको ऑरैकल साइट पर लिंक शामिल करना चाहिए प्रत्यक्ष उद्धरण का उपयोग करने जा रहे हैं। http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html –

0

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

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