Variabili globali in Java

Come si definiscono le variabili globali in Java?

Per definire la variabile globale è ansible utilizzare la parola chiave statica

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

ora puoi accedere a e b da qualsiasi luogo chiamando

 Example.a; Example.b; 

Non lo fai. Questo è di design. Non dovresti farlo anche se tu potessi.

Detto questo, potresti creare una serie di membri statici pubblici in una class chiamata Globals.

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

ma non dovresti davvero :). Seriamente .. non farlo.

Un altro modo è creare un’interfaccia come questa:

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

Qualsiasi class che deve usarli deve solo implementare l’interfaccia:

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

Stai meglio usando l’iniezione di dipendenza:

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

A dire il vero, non esiste un concetto di “GLOBAL” in un programma OO java

Tuttavia c’è qualche verità dietro la tua domanda, perché ci saranno alcuni casi in cui si desidera eseguire un metodo in qualsiasi parte del programma. Ad esempio — metodo random () nell’app Phrase-O-Matic, è un metodo che può essere chiamato da qualsiasi punto di un programma.

Quindi, al fine di soddisfare le cose come sopra “Abbiamo bisogno di avere variabili e metodi come globali”

DICHIARARE UNA VARIABILE COME GLOBALE.

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

DICHIARARE UN METODO COME GLOBALE .

  1. Mark the method as public static While declaring. 

Poiché ho dichiarato variabili globali e metodo come statico, puoi chiamarli ovunque desideri semplicemente con l’aiuto del seguente codice

ClassName.X

NOTA : X può essere o il nome del metodo o il nome della variabile come da requisito e ClassName è il nome della class in cui li hai dichiarati.

Niente dovrebbe essere globale, tranne le costanti.

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

Metti questo nella tua class principale. In altri file .java, usalo attraverso:

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

Assicurati che quando sposti il ​​codice dal pavimento della stanza di taglio e nel rilascio, rimuovi o commenta questa funzionalità.

Se hai un metodo workhorse, come un randomizer, ti suggerisco di creare un pacchetto “Toolbox”! Tutti i programmatori dovrebbero averne uno, quindi ogni volta che lo si vuole usare in .java, basta importarlo!

Un sacco di buone risposte, ma voglio dare questo esempio in quanto è considerato il modo più corretto per accedere alle variabili di una class da un’altra class: l’uso di getter e setter.

Il motivo per cui si utilizzano getter e setter in questo modo invece di rendere pubblica la variabile è la seguente. Diciamo che il tuo var sarà un parametro globale che NON vorresti mai che qualcuno cambiasse durante l’esecuzione del tuo programma (nel caso in cui stai sviluppando codice con un team), qualcosa come forse l’URL di un sito web. In teoria questo potrebbe cambiare e potrebbe essere usato molte volte nel tuo programma, quindi vuoi usare un var globale per essere in grado di aggiornarlo tutto in una volta. Ma non vuoi che qualcun altro entri e cambi questo var (probabilmente senza rendersi conto di quanto sia importante). In tal caso, semplicemente non includi un metodo setter e includi solo il metodo getter.

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

Uno, non esiste una variabile globale in Java

Due, quello che abbiamo è una parola chiave ‘statica’ e questo è tutto ciò di cui abbiamo bisogno. Niente esiste al di fuori della class in Java. La parola chiave static rappresenta una variabile di class che al contrario della variabile di istanza ha solo una copia e che trascende su tutte le istanze di quella class creata, il che significa che il suo valore può essere modificato e accessibile a tutte le istanze in qualsiasi punto. Se hai bisogno di una variabile globale a cui puoi accedere al di là degli ambiti, allora questa è la variabile di cui hai bisogno, ma il suo ambito esiste solo dove si trova la class, e questo sarà tutto.

Non esiste una variabile veramente globale in Java. Ogni variabile statica deve appartenere a una class (come System.out), ma quando hai deciso in quale class andrà, puoi fare riferimento ad essa da ovunque caricato dallo stesso classloader.

Si noti che le variabili statiche dovrebbero sempre essere protette durante l’aggiornamento per evitare condizioni di gara.

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

In questo modo è ansible accedervi con GlobalClass.x e GlobalClass.s

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

puoi chiamare ovunque tu voglia:

 GlobalImpl.global // 5 

Come probabilmente intuisci dalla risposta, non ci sono variabili globali in Java e l’unica cosa che puoi fare è creare una class con membri statici:

 public class Global { public static int a; } 

Puoi usarlo con Global.a altrove. Tuttavia, se si utilizza Java 1.5 o versione successiva, è ansible utilizzare la magia import static per renderla ancora più simile a una variabile globale reale:

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

E voilà !

Ora questo è lontano da una pratica migliore, così come puoi vedere nelle pubblicità: non farlo a casa

Non ci sono variabili globali in Java, ma ci sono classi globali con campi pubblici. Puoi usare la funzione di importazione statica di java 5 per farla sembrare quasi come le variabili globali.

Generalmente la variabile globale (presumo che la si paragoni con C, Cpp) si definisca come public static final

piace

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

Gli ENUM sono anche utili in questo scenario:

Per esempio Calendar.JANUARY )

In generale, la programmazione Java non ha alcuna variabile globale. A parte le variabili locali, tutte rientrano nell’ambito di qualsiasi class definita nel programma. Possiamo avere la variabile statica per avere l’ambito delle variabili globali.

Creare un file indipendente, ad es. Example.java per utilizzare la prima soluzione, va bene. Puoi farlo anche all’interno dell’app, se ad es. Le variabili globali sono speciali per la tua app corrente, ecc .:

Crea una class all’inizio e dichiara le tue variabili lì:

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

Puoi quindi accedere a queste variabili – utilizzandole come “Globals.month_number”, ecc. – da averywhere nella tua app.

Seguendo il concetto, le variabili globali, conosciute anche come variabili di istanza, sono le variabili di livello di class, cioè, sono definite all’interno di una class ma all’esterno dei metodi. Per renderli completamente disponibili e utilizzarli direttamente, fornire la parola chiave static. Quindi se sto scrivendo un programma per operazioni aritmetiche semplici e richiede una coppia numerica, allora due variabili di istanza sono definite come tali:

 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 

Inoltre, l’uso della parola chiave statica prima delle variabili di istanza ci consente di non specificare più tipi di dati per le stesse variabili ancora e ancora. Basta scrivere direttamente la variabile.

 // 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 

Per definire la variabile globale è ansible utilizzare la parola chiave statica

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

ora puoi accedere a e b da qualsiasi luogo chiamando

 Tools.a; Tools.b; 

Yoy ha ragione … specialmente in J2ME … Puoi evitare NullPointerException inserendo all’interno del tuo costruttore MidLet (inizializzazione della prigione) questa riga di codice:

 new Tools(); 

Ciò garantisce che gli strumenti vengano allocati prima di qualsiasi istruzione che lo utilizza.

Questo è tutto!