2010-11-28 6 views
64

एक enclosing उदाहरण होता है कि आवश्यक हैएक enclosing उदाहरण जिसमें <मेरे संदर्भ>

नीचे कोड है की आवश्यकता है। positionObj वह ऑब्जेक्ट है जिसे मैं उपयोग करने का प्रयास कर रहा हूं और यह मुझे उपरोक्त त्रुटि दे रहा है।

यह अस्पष्ट क्यों है।

package toolBox; 
import toolBox.Secretary.positionObj;  

public class PositionManagement { 
    public static HashMap<String, Secretary.positionObj> main(String vArg){ 
     positionObj newPosition=new positionObj(); 
    } 
} 

उत्तर

96

आप Secretary के उदाहरण के बिना गैर स्थैतिक आंतरिक positionObj कक्षा का उपयोग करने का प्रयास कर रहे हैं।
एक गैर स्थैतिक आंतरिक वर्ग अपने मूल वर्ग

के उदाहरण से संबंधित होना चाहिए, आपको शायद positionObj को सामान्य कक्षा या स्थिर आंतरिक कक्षा में बदलना चाहिए।

वैकल्पिक रूप से, उदाहरण से संबंधित आंतरिक वर्ग का उदाहरण बनाने के लिए आप someSecretary.new positionObj() लिख सकते हैं।

+0

सहमत हुए, लेकिन यह सामान्य कथन थोड़ा अस्पष्ट है। क्या आप एक उदाहरण प्रदान कर सकते हैं या मुझे कहीं कहीं इंगित कर सकते हैं जो इसे बेहतर समझा सकता है? धन्यवाद –

+1

@ जेसन: यहां आप जाओ। – SLaks

+0

हां। मुझे एहसास हुआ कि अगर डीबग करने की कोशिश की गई तो मैंने अपनी स्थिति ओबीजे को स्थैतिक बना दिया कि यह काम करता है (इसके सचिव वर्ग में)। मैं खुश हूं और यह सब अब काम करता है, लेकिन सूचक के लिए धन्यवाद। इस त्रुटि के वास्तविक कारण में देखेंगे। –

0

सही सामान्य हस्ताक्षर

public static HashMap<String, positionObj> main(String vArg) 

आप न positionObj अर्हता प्राप्त करने के बाद आप पहले से ही आयात की जरूरत होगी।

हालांकि, मुझे पूरा यकीन है कि एक मुख्य विधि नीचे हस्ताक्षर के अनुरूप होना चाहिए। आप करना चाहते हैं तो मुख्य, अपने कार्यक्रम के लिए मुख्य विधि हो

public static void main(String[] args) {...} 

को हस्ताक्षर बदल तो आपको एक अलग स्थिर विधि है कि एक मानचित्र रिटर्न बना सकते हैं और मुख्य रूप से यह आह्वान।

एक नोट के रूप में, सभी वर्गों को पूंजी पत्र, स्थिति ओबीजे से शुरू होना चाहिए, स्थिति ओबीजे होना चाहिए।

+0

हे, कुछ कोड छोड़ दिया। मामले के बारे में सहमत हुए। कक्षा कुछ वापस कर देती है, लेकिन त्रुटि यहां है और मैं अस्पष्ट क्यों हूं। –

+0

@ जेसन, मैंने अपना उत्तर – hvgotcodes

+0

@ जेसन अपडेट किया, मुझे नहीं लगता कि आप मुख्य से कुछ भी वापस कर सकते हैं। – hvgotcodes

1

पहले बाहरी कक्षा का एक ऑब्जेक्ट बनाएं। इस मामले में मुझे लगता है कि "सचिव"। फिर स्थिति ओबीजे बनाएँ। इस तरह,

Secretary x = new Secretary(); 
Secretary.positionObj y = x.new positionObj(); 
संबंधित मुद्दे