271 votes

Variables globales en Java

Comment définir des variables globales en Java ?

23 votes

Pouvez-vous nous dire pourquoi vous voulez définir des variables globales en Java ?

54 votes

Pour accéder à la variable depuis l'extérieur de la classe

7 votes

Vous devriez peut-être modifier votre question pour y inclure un exemple de code illustrant précisément ce que vous voulez. Cela nous aiderait à recommander la meilleure solution.

318voto

Abi Points 1994

Pour définir une variable globale, vous pouvez utiliser le mot-clé static.

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

maintenant vous pouvez accéder à a et b de n'importe où en appelant

Example.a;

Example.b;

6 votes

"Global" est le nom de la classe.

18 votes

Faites attention lorsque vous faites cela - lorsque la classe Global sera déchargée, les variables seront indéfiniment nulles. Si vous vendez votre application, cela se produira tôt ou tard et vous continuerez à chercher l'erreur partout mais pas là.....

12 votes

El static Le mot-clé rend les variables accessibles globalement, pendant que leur classe est chargée.

60voto

Tu ne le fais pas. C'est à dessein. Tu ne devrais pas le faire même si tu le pouvais.

Cela dit, vous pouvez créer un ensemble de membres statiques publics dans une classe appelée Globals.

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

mais vous ne devriez vraiment pas :). Sérieusement ne le faites pas.

1 votes

Comme je l'ai écrit plus haut - lorsque la classe est déchargée, les variables perdent leur valeur et deviennent nulles et votre application se plante.

8 votes

Alors quelle est la meilleure approche, à savoir que je peux déclarer des constantes pour que toutes les méthodes de la classe puissent y accéder ?

10 votes

Les messages de cette nature sont la raison pour laquelle les novices développent une phobie des variables globales, et nous voyons alors toutes sortes de techniques flagrantes être conçues pour contourner le tabou des variables globales, mais obtenir le même effet.

50voto

Ayman Jitan Points 749

Une autre méthode consiste à créer une interface comme celle-ci :

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

Toute classe qui a besoin de les utiliser doit simplement implémenter l'interface :

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

0 votes

Je me demande pourquoi cette réponse n'a (avant la mienne) aucun vote positif. Ne fournit-elle pas une réponse alternative raisonnable à celle fournie par toutes les autres réponses ?

0 votes

C'est une mauvaise pratique -> GlobalImpl implémente GlobalConstants

0 votes

Pouvez-vous expliquer votre point de vue s'il vous plaît ? cela n'a jamais été une mauvaise pratique et s'il vous plaît pas besoin de voter vers le bas, merci :)

25voto

Peter Lawrey Points 229686

Il est préférable d'utiliser l'injection de dépendances :

public class Globals {
    public int a;
    public int b;
}

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

5 votes

C'est vrai, mais je pense que votre utilisation de "Globals" rend les choses un peu confuses :-). Quelque chose comme "Paramètres" serait plus approprié puisque ce n'est pas nécessairement Global.

13voto

sunny Points 238

A vrai dire, il n'y a pas de concept de "GLOBAL" dans un programme OO en java

Néanmoins, il y a une part de vérité derrière votre question car il y aura des cas où vous voudrez exécuter une méthode à n'importe quel moment du programme. Par exemple, la méthode Random() de l'application Phrase-O-Matic est une méthode qui doit pouvoir être appelée de n'importe où dans le programme.

Donc, afin de satisfaire les choses comme ci-dessus "Nous devons avoir des variables et des méthodes de type global".

POUR DÉCLARER UNE VARIABLE COMME GLOBALE.

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

POUR DÉCLARER UNE MÉTHODE COMME GLOBALE .

 1. Mark the method as public static While declaring.

Parce que j'ai déclaré les variables globales et les méthodes comme étant statiques, vous pouvez les appeler où vous le souhaitez en utilisant simplement le code suivant

Nom de la classe.X

NOTA : X peut être soit un nom de méthode, soit un nom de variable selon le besoin et ClassName est le nom de la classe dans laquelle vous les avez déclarés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X