Variáveis ​​Globais em Java

Como você define variables ​​globais em Java?

   

Para definir a variável global, você pode usar a palavra-chave estática

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

agora você pode acessar aeb de qualquer lugar chamando

 Example.a; Example.b; 

Você não Isso é por design. Você não deveria fazer isso mesmo se pudesse.

Dito isto, você poderia criar um conjunto de membros estáticos públicos em uma class chamada Globals.

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

mas você realmente não deveria :). Sério .. não faça isso.

Outra maneira é criar uma interface como esta:

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

Qualquer class que precise usá-los só precisa implementar a interface:

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

Você está melhor usando a injeção de dependência:

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

Verdadeiramente falando não há um conceito de “GLOBAL” em um programa java OO

No entanto, há alguma verdade por trás de sua pergunta, porque haverá alguns casos em que você deseja executar um método em qualquer parte do programa. Por exemplo, — método random () na frase-O-Matic app, é um método deve ser chamado de qualquer lugar de um programa.

Então, a fim de satisfazer as coisas como acima “Precisamos ter variables ​​globais e methods”

DECLARAR UMA VARIÁVEL COMO GLOBAL.

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

DECLARAR UM MÉTODO COMO GLOBAL .

  1. Mark the method as public static While declaring. 

Como declarei variables ​​globais e methods como estáticos, você pode chamá-los em qualquer lugar que desejar, simplesmente com a ajuda do seguinte código

ClassName.X

NOTA : X pode ser o nome do método ou o nome da variável conforme o requisito e ClassName é o nome da class na qual você os declarou.

Nada deve ser global, exceto para constantes.

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

Coloque isso dentro de sua class principal. Em outros arquivos .java, use-o através de:

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

Certifique-se de que, ao mover seu código do chão da sala de corte e liberar, remova ou comente essa funcionalidade.

Se você tem um método laborioso, como um randomizador, sugiro criar um pacote “Toolbox”! Todos os codificadores devem ter um, então sempre que você quiser usá-lo em um .java, basta importá-lo!

Muitas boas respostas, mas quero dar este exemplo, pois é considerado o modo mais adequado de acessar variables ​​de uma class por outra class: usando getters e setters.

A razão pela qual você usa getters e setters dessa maneira, em vez de apenas tornar a variável pública, é a seguinte. Vamos dizer que seu var será um parâmetro global que você NUNCA quer que alguém mude durante a execução do seu programa (no caso quando você está desenvolvendo código com uma equipe), algo como talvez a URL de um site. Em teoria, isso pode mudar e pode ser usado muitas vezes em seu programa, então você quer usar um var global para poder atualizar tudo de uma vez. Mas você não quer que alguém entre e mude este var (possivelmente sem perceber como é importante). Nesse caso, você simplesmente não inclui um método setter e inclui apenas o método 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; } } 

Um, não há variável global em Java

Dois, o que temos é uma palavra-chave ‘estática’ e é tudo o que precisamos. Nada existe fora da class em Java. A palavra-chave static representa uma variável de class que, ao contrário da variável de instância, tem apenas uma cópia e transcende todas as instâncias dessa class criadas, o que significa que seu valor pode ser alterado e acessado em todas as instâncias em qualquer ponto. Se você precisar de uma variável global que possa ser acessada além dos escopos, essa é a variável que você precisa, mas seu escopo existe apenas onde a class está, e isso será tudo.

Não existe uma variável verdadeiramente global em Java. Toda variável estática deve pertencer a alguma class (como System.out), mas quando você decide em qual class ela vai, você pode se referir a ela de qualquer lugar carregado pelo mesmo classloader.

Observe que as variables ​​estáticas sempre devem ser protegidas durante a atualização para evitar condições de corrida.

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

Desta forma, você pode acessá-los com GlobalClass.x e GlobalClass.s

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

você pode ligar para qualquer lugar que quiser:

 GlobalImpl.global // 5 

Como você provavelmente imagina a partir da resposta, não há variables ​​globais em Java e a única coisa que você pode fazer é criar uma class com membros estáticos:

 public class Global { public static int a; } 

Você pode usá-lo com o Global.a outro lugar. No entanto, se você usar o Java 1.5 ou melhor, poderá usar a mágica import static para fazer com que pareça ainda mais como uma variável global real:

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

E voilà !

Agora isso está longe de ser uma prática recomendada, como você pode ver nos comerciais: não faça isso em casa

Não há variables ​​globais em Java, mas existem classs globais com campos públicos. Você pode usar o recurso de importação estática do java 5 para fazer com que pareça quase como variables ​​globais.

Geralmente variável global (suponho que você está comparando com C, Cpp) define como public static final

gostar

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

ENUMs também são úteis em tal cenário:

Por exemplo, Calendar.JANUARY )

Em geral, a programação Java não possui nenhuma variável global. Já que as variables ​​locais estão todas no escopo de qualquer class definida no programa. Podemos ter a variável estática para ter o escopo das variables ​​globais.

Criando um arquivo independente, por exemplo. Example.java para usar a primeira solução, está bem. Você pode fazer isso também dentro do aplicativo, se, por exemplo, as variables ​​globais forem especiais para seu aplicativo atual, etc .:

Crie uma class no começo e declare suas variables ​​lá:

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

Você pode acessar essas variables ​​- usando-as como “Globals.month_number”, etc. – em qualquer lugar do aplicativo.

Indo pelo conceito, variables ​​globais, também conhecidas como variável de instância são as variables ​​de nível de class, ou seja, elas são definidas dentro de uma class, mas fora dos methods. Para disponibilizá-los completamente e usá-los diretamente, forneça a palavra-chave estática. Então, se eu estou escrevendo um programa para operação aritmética simples e requer um par de números, então duas variables ​​de instância são definidas como tal:

 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 

Além disso, o uso de palavras-chave estáticas antes das variables ​​de instância nos permite não especificar tipos de dados para as mesmas variables ​​de novo e de novo. Apenas escreva a variável diretamente.

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

Para definir a variável global, você pode usar a palavra-chave estática

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

agora você pode acessar aeb de qualquer lugar chamando

 Tools.a; Tools.b; 

Yoy está certo … especialmente no J2ME … Você pode evitar o NullPointerException colocando dentro do seu construtor MidLet (boot progressiva) esta linha de código:

 new Tools(); 

Isso garante que as ferramentas sejam alocadas antes de qualquer instrução que as use.

É isso aí!