2011-01-12 8 views
8
String name = "Marcus"; 
static String s_name = "Peter"; 

public static void main(String[] args) {  
    System.out.println(name);//ERROR 
    System.out.println(s_name);//OK 
} 

त्रुटि: गैर स्थिर फ़ील्ड नाममुख्य से पढ़ने वाले गैर स्थैतिक चर के साथ कोई समस्या क्यों है?

+0

एक ही मुद्दा। Http://stackoverflow.com/questions/ देखें 2042813/कॉलिंग-गैर-स्थैतिक-विधि-इन-स्टेटिक-विधि-इन-जावा – dkarp

उत्तर

6

कारण यह एक समस्या का कारण बनता है main एक स्थिर तरीका है कि, जिसका मतलब है यह कोई रिसीवर वस्तु है कि करने के लिए एक स्थिर संदर्भ नहीं बना सकता। दूसरे शब्दों में, यह किसी वस्तु के सापेक्ष काम नहीं करता है। नतीजतन, यदि आप एक गैर स्थैतिक क्षेत्र को देखने का प्रयास करते हैं, तो जावा उस वस्तु के बारे में भ्रमित हो जाता है जिसमें फ़ील्ड रहता है। आम तौर पर, यह मान लेगा कि फ़ील्ड उस ऑब्जेक्ट में है जिस से विधि लागू की जा रही है, लेकिन क्योंकि main स्थिर है वस्तु मौजूद नहीं है।

एक सामान्य नियम के रूप में, आप स्थैतिक तरीकों से नियमित आवृत्ति चर का उपयोग नहीं कर सकते हैं।

+0

तकनीकी रूप से, जिस वस्तु पर आप काम कर रहे हैं वह कक्षा है। मैं यह भी नहीं कहूंगा कि यह एक सामान्य नियम है ... मैं ' डी कहते हैं कि यह एक नियम है। –

+0

मैं यह भी नहीं कहूंगा कि जावा 'भ्रमित हो जाता है'। इसके बारे में भ्रमित होने के लिए कुछ भी नहीं है। कोई आवृत्ति वस्तु नहीं है। अवधि। इसलिए उदाहरण फ़ील्ड तक पहुंचने का कोई तरीका नहीं है। – EJP

2

गैर स्थैतिक सदस्य चर और कार्यों तक पहुंचने के लिए, आपके पास एक विशिष्ट वस्तु होनी चाहिए। (जैसे कि सभी class Bob { ... } के अंदर था, तो आप की तरह

Bob bob = new Bob(); 
System.out.println(bob.name); 

आपका मुख्य अंदर कुछ करने के लिए गैर स्थिर तरीकों के साथ के रूप में की आवश्यकता होगी।

+0

(संपादन के लिए धन्यवाद। ऐसा लगता है कि मैं लिख रहा हूं जी हाल ही में रूबी बहुत ज्यादा।) – Matt

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