एक संलग्न उदाहरण जिसमें <मेरा संदर्भ> शामिल है, की आवश्यकता है


91

एक संलग्न उदाहरण जिसमें आवश्यक है

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

यह स्पष्ट नहीं है कि क्यों।

package toolBox;
import toolBox.Secretary.positionObj;    

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

जवाबों:


129

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

आपको शायद positionObjएक सामान्य वर्ग या एक स्थिर आंतरिक वर्ग में बदलना चाहिए ।

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


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

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

2
त्रुटि का वास्तविक कारण यह है कि आपने मूल उदाहरण नहीं दिया है। जब तक आपको वास्तव में एक की आवश्यकता न हो तब तक गैर-स्थिर आंतरिक वर्गों का उपयोग न करें और आप समझें कि वे कैसे काम करते हैंc2.com/ppr/wiki/JavaIdioms/NoPublicInnerClasses.html
SLaks

दोनों समाधान पूरी तरह से काम करते हैं [1- पोजिशनऑबज क्लास को स्थिर बनाते हुए और 2- आउटरक्लास.न्यू क्लासऑब्ज () का उपयोग करते हुए]। धन्यवाद
jason m

हाँ। हालाँकि, आपको अपने कोड आधार को अच्छी तरह से समझने की जरूरत है कि कौन सा सही है।
SLKs

16

सबसे पहले आउटर क्लास की एक वस्तु बनाएं। इस मामले में मुझे लगता है कि "सचिव"। फिर स्थिति बनाएँ। ऐशे ही,

Secretary x = new Secretary();
Secretary.positionObj y = x.new positionObj();

धन्यवाद! ... मैंने v 1.0 से जावा का उपयोग किया है और मुझे नहीं पता था कि आप ऐसा कर सकते थे!
रिचर्ड टी।

0

सही सामान्य हस्ताक्षर होंगे

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

जब से आप पहले से ही इसे आयात करते हैं, तब से आपको स्थिति की जांच करने की आवश्यकता नहीं है।

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

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

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

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


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

@ हसन, मुझे नहीं लगता कि आप मुख्य से कुछ भी वापस कर सकते हैं।
17:00 बजे hvgotcodes
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.