Bonjour,
Peut on considérer qu'une variable statique est une variable globale en java?
Merci de votre réponse
Cordialement.
Nathalie
Version imprimable
Bonjour,
Peut on considérer qu'une variable statique est une variable globale en java?
Merci de votre réponse
Cordialement.
Nathalie
Non on ne peut pas considérer une variable Global comme une variable Static,
une varibale static ou variable de classe est commune à toutes les references de la classes tandique la variable Globale est specifique à la reference de la classe.
variable static dites aussi variable de class
variable globales dites aussi variables d'instances
j'espere que j'ai pas dis trop de bétise
Si une "variable globale" est une variable accessible de tout code ...
cela n'existe pas en Java.
Même une variable public static n'est pas globale (surprenant mais c'est vrai!)
on a aussi des objets ThreadLocal dans un contexte de Thread.
tu as raison après reflexion professeur shadoko la variable globale est accessible dans tous le code, je l'ai testé en flex, elle depend d'aucune classe sous flex pour avoir une variable global on l'a declare à l'exterieure de la classe dans les imports
désolé pour la bêtise que j'ai dite
Bonsoir,
Donc en conclusion on peut dire qu'une variable statique est une variable globale en java.
Merci de votre confirmation.
Cordialement.
Nathalie
non .... ça en a le goût et l'odeur mais stricto sensu ça n'en est pas une
(je l'ai dit précédement).
(explication: aussi bizarre que ça puisse paraître à un moment donné tu peux avoir MaClasse.varStatique == 5 et Maclasse.VarStatique == 10 !!! il suffit que "MaClasse " soit chargée par deux ClassLoaders différents! la première fois que ce genre d'incident extraordinaire arrive on est tout surpris ... rassures toi c'est rare!)
professeur: de la même manière dans un autre language (le C par exemple), si tu charge une librairie deux fois, les variables "statiques" présentes dans la libirairies sont présentes deux fois en mémoire et peuvent avoir une vie séparée. Ce qui importe c'est que le code qui l'utilisé étant luis aussi chargé deux fois, chacun vois sa variable statique comme un grand. C'est la meme chose quand tu passe par deux classloader (exemple typique: un système de plugin où tu charge un plugin deux fois). chaque plugin aura son lot de variable "globale".
Merci beaucoup de vos explications.
Pouvez vous me dire poruqoi vous avez ramené l'exemple des variables statiques qui peuvent avoir deux valeurs différentes si elles sont chargées par deux classloaders au même moment .
Est ce pour montrer la différence avec une variable globale?
Merci encore à vous.Code:
1
2 explication: aussi bizarre que ça puisse paraître à un moment donné tu peux avoir MaClasse.varStatique == 5 et Maclasse.VarStatique == 10 !!! il suffit que "MaClasse " soit chargée par deux ClassLoaders différents!
Cordialement.
Nathalie
ne te tracasses pas avec cet exemple: c'est un epiphénomène (eh oui : deux ClassLoaders à l'insu de mon plein grè!)
(d'ailleurs je n'avais jamais envisagé cet aspect en C!);
en fait mon intention était de dire que cet exemple limite permet de se poser une question plus philosophique: globale à quoi?
à la session, au Thread, au processus,....
avec des applications avec des parties multiples (et même réparties) la notion de globalité est toujours relative. Donc question fondamentale: on veut partager une valeur avec qui, quand, comment?