दिलचस्प पोस्ट
बहुस्तृत करने के लिए नोड जे एस विकल्प का उपयोग करना जावा में यूएस-एस्की के लिए UTF-8 को कैसे परिवर्तित करें जावा में XPath का उपयोग करते हुए XML को कैसे पढ़ा जाए फायरबसे से स्विफ्ट 2 छवियां पुनर्प्राप्त करना तत्व आईडी के साथ जेएस फंक्शन नाम का विरोध क्यों होता है? StackOverflow के इनपुट टैग की तरह jQuery के स्वत: पूर्ण टैगिंग प्लग-इन? एंड्रॉइड एनडीके का इस्तेमाल करते हुए एक स्थिर लाइब्रेरी कैसे संकलित करें? मर्ज किए गए सभी गिट शाखाओं को मैं कैसे हटा सकता हूं? चयनित तत्व का बाहरी HTML प्राप्त करें अवधि और अल्पविराम के बीच अंतर जब प्रतिध्वनि बनाम रिटर्न के साथ घनिष्ठता? पॉइंटर्स की तुलना कैसे करें? पायथन का समतुल्य && (तार्किक-और) एक बयान में सर्वर साइड ऑप्टिमाइज़ेशन के लिए $ http द्वारा सर्वर के साथ कोणीय- UI के टाइपआहेड को कैसे टाई? एक पृष्ठ पर दो Google चार्ट कैसे जोड़ सकते हैं? ऑपरेटर ओवरलोडिंग के लिए बुनियादी नियम और मुहावरे क्या हैं?

जावा में वैश्विक चर

आप जावा में वैश्विक चर को कैसे परिभाषित करते हैं?

वेब के समाधान से एकत्रित समाधान "जावा में वैश्विक चर"

वैश्विक वैरिएबल को परिभाषित करने के लिए आप स्थिर खोजशब्द का उपयोग कर सकते हैं

public class Example { public static int a; public static int b; } 

अब आप कॉल करके कहीं से ए और बी तक पहुंच सकते हैं

 Example.a; Example.b; 

तुम नहीं करते डिजाइन के अनुसार आप ऐसा नहीं कर सकते, भले ही आप कर सकें।

ऐसा कहा जा रहा है कि आप ग्लोबल्स नामक कक्षा में सार्वजनिक स्थिर सदस्यों का एक समूह बना सकते हैं।

 public class Globals { public static int globalInt = 0; /// } 

लेकिन आप वास्तव में नहीं होना चाहिए :)। गंभीरता से .. यह मत करो।

एक अन्य तरीका इस तरह एक इंटरफ़ेस बनाना है:

 public interface GlobalConstants { String name = "Chilly Billy"; String address = "10 Chicken head Lane"; } 

किसी भी वर्ग को उनको उपयोग करने की आवश्यकता होती है केवल अंतरफलक को लागू करना है:

 public class GlobalImpl implements GlobalConstants { public GlobalImpl() { System.out.println(name); } } 

आप निर्भरता इंजेक्शन का उपयोग कर बेहतर हैं:

 public class Globals { public int a; public int b; } public class UsesGlobals { private final Globals globals; public UsesGlobals(Globals globals) { this.globals = globals; } } 

वास्तव में यह कह रहा है कि जावा ओ ओ प्रोग्राम में "ग्लोबल" की कोई अवधारणा नहीं है

फिर भी आपके प्रश्न के पीछे कुछ सच्चाई है क्योंकि कुछ ऐसे मामले होंगे जहां आप प्रोग्राम के किसी भी हिस्से में कोई विधि चला सकते हैं। उदाहरण के लिए- वाक्यांश- O-Matic एप में यादृच्छिक () विधि; यह एक विधि है जिसे किसी प्रोग्राम के कहीं से भी योग्य होना चाहिए।

तो ऊपर की तरह चीजों को संतुष्ट करने के लिए "हमें ग्लोबल जैसी वैरिएबल्स और विधियों की आवश्यकता है"

ग्लोबल के रूप में एक भिन्नता का विवरण देना

  1.Mark the variable as public static final While declaring. 

ग्लोबल के रूप में एक विधि घोषित करने के लिए

  1. Mark the method as public static While declaring. 

क्योंकि मैंने वैश्विक वैरिएबल और विधि को स्थैतिक के रूप में घोषित किया है, आप उन्हें निम्नलिखित कोड की मदद से कहीं भी कह सकते हैं

ClassName.X

नोट : आवश्यकता के अनुसार एक्स या तो विधि नाम या चर नाम हो सकता है और कक्षा नाम उस वर्ग का नाम है जिसमें आपने उन्हें घोषित किया था।

स्थिरों को छोड़कर कुछ भी वैश्विक नहीं होना चाहिए

 public class MyMainClass { public final static boolean DEBUGMODE=true; } 

इसे अपने मुख्य वर्ग के भीतर रखें अन्य। जावा फाइलों में, इसका उपयोग करें:

 if(MyMainClass.DEBUGMODE) System.out.println("Some debugging info"); 

सुनिश्चित करें कि जब आप अपने कोड को काटने के कमरे के फर्श से बाहर ले जाते हैं और रिलीज में आप इस कार्यक्षमता को हटा देते हैं या टिप्पणी करते हैं

यदि आपके पास एक वर्कहोर्स विधि है, जैसे कि एक रैंडाइज़र, मैं एक "टूलबॉक्स" पैकेज बनाने का सुझाव देता हूं! सभी कॉडर्स में एक होना चाहिए, फिर जब भी आप इसे जावा में उपयोग करना चाहते हैं, तो इसे आयात करें!

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

 public class Global{ private static int var = 5; public static int getVar(){ return this.var; } //If you do not want to change the var ever then do not include this public static void setVar(int var){ this.var = var; } } 

एक, जावा में कोई वैश्विक वैरिएबल नहीं है

दो, हमारे पास क्या 'स्थिर' कीवर्ड है और यही वह सब है जो हमें चाहिए। जावा में वर्ग के बाहर कुछ भी मौजूद नहीं है स्थैतिक कीवर्ड एक वर्ग चर का प्रतिनिधित्व करता है, जो इसके विपरीत उदाहरण के लिए केवल एक प्रति है और जो उस क्लास के सभी उदाहरणों से अधिक है, जो कि इसका मतलब है कि इसका मान बदला जा सकता है और सभी बिंदुओं पर किसी भी बिंदु पर पहुंचा जा सकता है। यदि आपको एक वैश्विक वैरिएबल की आवश्यकता है जो कि स्कोप से परे पहुंचा जा सकता है, तो यह आपके लिए आवश्यक चर है, लेकिन इसका दायरा केवल मौजूद है जहां वर्ग है, और वह सब कुछ होगा

जावा में वास्तव में वैश्विक वैरिएबल जैसी कोई चीज नहीं है प्रत्येक स्टैटिक वेरिएबल को कुछ क्लास से संबंधित होना चाहिए (जैसे System.out), लेकिन जब आपने तय किया है कि यह किस वर्ग में जाएगा, तो आप उसी क्लासलोडर द्वारा लोड किए गए हर जगह से इसका संदर्भ ले सकते हैं।

ध्यान दें कि दौड़ की स्थिति से बचने के लिए अद्यतन करते समय स्थिर चर हमेशा संरक्षित होना चाहिए।

 public class GlobalClass { public static int x = 37; public static String s = "aaa"; } 

इस प्रकार आप उन्हें GlobalClass.x और GlobalClass.s साथ एक्सेस कर सकते हैं

 public class GlobalImpl { public static int global = 5; } 

आप चाहते हैं कहीं भी कॉल कर सकते हैं:

 GlobalImpl.global // 5 

जैसा कि आप शायद जवाब से अनुमान लगाते हैं जावा में कोई वैश्विक वैरिएबल नहीं है और केवल एक चीज जो आप कर सकते हैं वह स्थिर सदस्यों के साथ एक वर्ग बनाना है:

 public class Global { public static int a; } 

आप इसे कहीं और Global.a साथ उपयोग कर सकते हैं। हालांकि यदि आप जावा 1.5 या उससे बेहतर उपयोग करते हैं तो आप इसे import static जादू का उपयोग वास्तविक वैश्विक चर के रूप में और भी अधिक देखने के लिए कर सकते हैं:

 import static test.Global.*; public class UseGlobal { public void foo() { int i = a; } } 

और वोआला !

अब यह एक बेहतरीन अभ्यास से दूर है ताकि आप विज्ञापनों में देख सकें: घर पर ऐसा मत करो

जावा में कोई वैश्विक चर नहीं है, लेकिन सार्वजनिक क्षेत्र के साथ वैश्विक कक्षाएं हैं। आप जावा 5 के स्थिर आयात सुविधा का उपयोग लगभग वैश्विक वैरिएबल की तरह कर सकते हैं।

 // Get the access of global while retaining priveleges. // You can access variables in one class from another, with provisions. // The primitive must be protected or no modifier (seen in example). // the first class public class farm{ int eggs; // an integer to be set by constructor fox afox; // declaration of a fox object // the constructor inits farm(){ eggs = 4; afox = new fox(); // an instance of a fox object // show count of eggs before the fox arrives System.out.println("Count of eggs before: " + eggs); // call class fox, afox method, pass myFarm as a reference afox.stealEgg(this); // show the farm class, myFarm, primitive value System.out.println("Count of eggs after : " + eggs); } // end constructor public static void main(String[] args){ // instance of a farm class object farm myFarm = new farm(); }; // end main } // end class // the second class public class fox{ // theFarm is the myFarm object instance // any public, protected, or "no modifier" variable is accessible void stealEgg(farm theFarm){ --theFarm.eggs; } } // end class 

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

 public class Add { static int a; static int b; static int c; public static void main(String arg[]) { c=sum(); System.out.println("Sum is: "+c); } static int sum() { a=20; b=30; return a+b; } } Output: Sum is: 50 

इसके अलावा उदाहरण वैरिएबल से पहले स्थिर कीवर्ड का उपयोग करने से हमें वही चर के लिए डेटाटाइप को बार-बार निर्दिष्ट नहीं करना पड़ेगा बस चर सीधे लिखें

आम तौर पर वैश्विक चर (मुझे लगता है कि आप इसे सी, सीपीपी के साथ तुलना कर रहे हैं) public static final रूप में परिभाषित करते हैं

पसंद

 class GlobalConstant{ public static final String CODE = "cd"; } 

ऐसे परिदृश्य में ENUM भी उपयोगी होते हैं:

उदाहरण Calendar.JANUARY लिए। जनवरी)

सामान्य तौर पर, जावा प्रोग्रामिंग में कोई भी ग्लोबल वैरिएबल नहीं होता है। क्योंकि स्थानीय वेरिएबल के अलावा सभी प्रोग्राम में परिभाषित किसी भी वर्ग के दायरे के अंतर्गत आते हैं। हमारे पास ग्लोबल वैरिएबल के दायरे के लिए स्थिर वैरिएबल हो सकता है।

एक स्वतंत्र फ़ाइल बनाना, उदा। पहला समाधान का उपयोग करने के लिए उदाहरण। जावा, बस ठीक है। आप ऐप के भीतर भी ऐसा कर सकते हैं, जैसे कि वैश्विक चर आपके वर्तमान ऐप, आदि के लिए विशेष हैं:

शुरुआत में एक वर्ग बनाएँ और वहां अपने चर को घोषित करें:

 class Globals { static int month_number; static String month_name; } 

फिर आप इन वेरिएबल्स तक पहुंच सकते हैं – उन्हें 'ग्लोबल्स.मोथ_एनम्बर' आदि के रूप में उपयोग कर सकते हैं – अपने ऐप में एवरलेव से।

वैश्विक वैरिएबल को परिभाषित करने के लिए आप स्थिर खोजशब्द का उपयोग कर सकते हैं

 public final class Tools { public static int a; public static int b; } 

अब आप कॉल करके कहीं से ए और बी तक पहुंच सकते हैं

 Tools.a; Tools.b; 

यो सही है … विशेष रूप से जे 2 एमई में … आप अपने मिडलैट कन्स्ट्रक्टर (प्रोजेक्ट इनिशियलाइज़ेशन) को कोड की इस पंक्ति में डालने से NullPointerException से बच सकते हैं:

 new Tools(); 

इससे यह सुनिश्चित होता है कि इसका उपयोग करने वाले किसी भी निर्देश के पहले टूल्स को आवंटित किया जाएगा।

बस!