IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Variable statique dans une méthode


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut Variable statique dans une méthode
    Bonjour,
    existe-t-il un moyen de définir une variable "statique" dans une méthode afin qu'elle ne soit pas recrée à chaque appel de la méthode (comme en C avec static) ?
    Sinon est-ce que c'est possible que cela soit géré au niveau de la JVM ou alors la seule solution est-elle de définir une variable membre de la classe ?
    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class ClassA {
    public void run() {
    Vector v = ClassBStatique.methodeRetournantUnVecteur();
    ...
    }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class ClassA {
    private Vector v;
    public void run() {
    this.v = ClassBStatique.methodeRetournantUnVecteur();
    ...
    }
    }
    Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 47
    Par défaut
    non, il n'est pas possible de déclarer une variable dans une méthode et de la réutiliser après que la méthode ait été exécuter.
    Il faut nécessairement que la variable soit une variable membre ou de classe (=statique). Pour ne pas réinstancier une variable statique, il faut alors tester sa valeur ; voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class ClassA {
    	private static ArrayList<ClassA> allInstances;
     
    	public ClassA() {
    		if(ClassA.allInstances == null) {
    			ClassA.allInstances = new ArrayList<ClassA>();
    		}
    		ClassA.allInstances.add(this);
    	}
    }

  3. #3
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    ya plus "propre" : initialiser dans un bloc static :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class ClassA {
    	private static ArrayList<ClassA> allInstances;
    	static
    	{
    		allInstances=new ArrayList<ClassA>();
    	}
     
    	public ClassA() {
    		ClassA.allInstances.add(this);
    	}
    }
    ce ne sera effectué qu'une fois par la JVM

    F.

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour,
    +1 mavina.

    Juste une version encore plus simple (qui est exactement equivalent à celle de mavina, juste plus courte):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class ClassA {
    	private static ArrayList<ClassA> allInstances=new ArrayList<ClassA>();
     
    	public ClassA() {
    		ClassA.allInstances.add(this);
    	}
    }

  5. #5
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    D'accord, on est donc bien obligé de passer par une variable membre, dommage.
    Merci pour vos réponses et solutions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] déclarer variables statiques dans une classe controller
    Par flora806 dans le forum Symfony
    Réponses: 8
    Dernier message: 15/10/2012, 17h26
  2. Réponses: 9
    Dernier message: 04/03/2011, 11h58
  3. [C# 2.0] Tableau statique dans une méthode
    Par margagn dans le forum Framework .NET
    Réponses: 4
    Dernier message: 21/05/2007, 12h46
  4. Réponses: 14
    Dernier message: 05/09/2006, 01h17
  5. [Tableaux] Probleme variable statique dans une classe
    Par Joe Le Mort dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2006, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo