2011-02-01 10 views
6

मुझे कुछ स्थिति है कि मैं किसी अन्य वर्ग में किसी अन्य वर्ग की आंतरिक कक्षा का उपयोग करना चाहता हूं। की तरह ...जावा में किसी अन्य वर्ग में नेस्टेड कक्षा का उपयोग कैसे करें?

public class ListData { 
    public static class MyData { 

     public String textSongName, textArtistName, textDuration, textDownloadPath, 
       textSongSize, textAlbumName, textUrl; 
     public boolean enable; 

     public MyData(String songName, String artistName, String duration, 
       String downloadPath, String songSize, String albumName, 
       String url, boolean e) { 
      textSongName = songName; 
      textArtistName = artistName; 
      textDuration = duration; 
      textDownloadPath = downloadPath; 
      textSongSize = songSize; 
      textAlbumName = albumName; 
      textUrl = url; 
      enable = e; 
     } 
    } 

} 

अब मैं किसी अन्य रूप में MyData वर्ग का उपयोग करना चाहते।

मैं यह कैसे कर सकता हूं?

धन्यवाद।

+3

आप अपने उदाहरण पुन: फ़ॉर्मेट कृपया नाम संघर्ष से बचने के लिए और खरोज दूर करने के लिए? – Nicolas

+0

आप कर सकते हैं, लेकिन आपको नहीं लगता कि आपको इसे शीर्ष-स्तर बनाना चाहिए। (बीटीडब्ल्यू: टर्मिनोलॉजी पोस्ट-1.1 एक "स्थैतिक आंतरिक वर्ग" के लिए नेस्टेड क्लास है। गैर स्थैतिक घोंसले वाले वर्गों के लिए आंतरिक कक्षा।) –

उत्तर

21
ListData.MyData myData = new ListData.MyData(); 
+0

तो घोंसला वाले वर्ग ऐसे हैं जैसे वे बाहरी वर्ग के दायरे में मौजूद हैं? –

+0

नहीं। यहां, माईडाटा एक स्थिर आंतरिक वर्ग है। आईडी माता-पिता वर्ग पर निर्भर नहीं है और सीमाबद्ध कक्षा के आंतरिक भाग तक पहुंच नहीं है। मैंने गलत स्वरूपण के कारण गलती तय की। –

+0

(पिछली टिप्पणी के लिए खेद है, आंतरिक वर्ग घोषणा में स्थिर को याद किया।) गैर स्थैतिक आंतरिक कक्षाएं उनके बाहरी वर्ग की सीमाओं के भीतर हैं, वास्तव में आप बाहरी में से किसी एक के बिना आंतरिक का उदाहरण नहीं ले सकते हैं। स्टेटिक आंतरिक कक्षाएं उनके संलग्न वर्ग के भीतर encapsulated हैं लेकिन इसमें कोई संदर्भ नहीं है, वे अनिवार्य रूप से अलग वर्गों की तरह व्यवहार करते हैं। – berry120

19

स्टेटिक नेस्टेड वर्ग

OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass(); 

इनर क्लासेस

OuterClass.InnerClass innerObject = outerObject.new InnerClass(); 

More about Nested Classes

2

आप अन्य वर्ग से आंतरिक वर्ग वस्तु अपने संलग्नित क्लास से क्षेत्र से बाहर है कि बना सकते हैं आपको अपने पूर्ण योग्य नाम का उपयोग करना चाहिए .... यहां, आपकी बाहरी श्रेणी ListData है और आपकी आंतरिक कक्षा माईडाटा है और हम माइडाटा को किसी अन्य वर्ग से कॉल करते हैं जैसे कि। YourData .. हम नीचे कथन का उपयोग कर सकते हैं ..

सिंटेक्स: outerclass.innerclass = new outerclass.innerclass();

=>ListData.MyData objectname = new ListData.MyData();

नोट: इस का उपयोग कर सकते है केवल जब innner वर्ग स्थिर है ..

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