Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2410 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Gestion des classes statiques par la JVM

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gestion des classes statiques par la JVM

n°1486144
koslan
Posté le 04-12-2006 à 16:00:41  profilanswer
 

Salut
 
Voila j'ai une question toute bête mais j'ai du mal a trouver la réponse.  
Lorsqu'une classe possède une variable ou une méthode statique, un objet de cette classe est automatiquement créé sur le tas par la JVM. Jusque la, OK.
 
Mais je me demande à quel moment cette création d'objet est faite : lorque la classe est chargée ? ou uniquement lorsque l'on accède a un membre statique ? ou bien a un autre moment ?
 
Merci j'espere que quelqu'un a une idée la dessus!

mood
Publicité
Posté le 04-12-2006 à 16:00:41  profilanswer
 

n°1486418
the real m​oins moins
Posté le 05-12-2006 à 02:42:37  profilanswer
 

koslan a écrit :

Lorsqu'une classe possède une variable ou une méthode statique, un objet de cette classe est automatiquement créé

Tu veux sans doute parler d'instance, et non. (enfin, les instances des membres statiques de la classes...sont instanciés, forcément)
 

koslan a écrit :


Mais je me demande à quel moment cette création d'objet est faite : lorque la classe est chargée ? ou uniquement lorsque l'on accède a un membre statique ? ou bien a un autre moment ?


j'ai envie de dire que ça dépend du classloader, mais je *crois* que la classe ne sera chargée qu'au premier appel, et c'est à ce moment que les variables statiques sont initialisées, dans l'ordre de déclaration.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1486437
verdoux
And I'm still waiting
Posté le 05-12-2006 à 07:50:00  profilanswer
 

A noter un difference de comportement en Java 5:

Citation :


Virtual Machine - Previously, evaluating a class literal (for example, Foo.class) caused the class to be initialized; as of 5.0, it does not. Code that depends on the previous behavior should be rewritten.  
 
You can use the following code to force initialization of a class:  

Code :
  1. //... Foo.class ...          //OLD CODE
  2. ... forceInit(Foo.class) ... //NEW CODE
  3.    
  4. /**
  5. * Forces the initialization of the class pertaining to  
  6. * the specified <tt>Class</tt> object.  
  7. * This method does nothing if the class is already
  8. * initialized prior to invocation.
  9. *
  10. * @param klass the class for which to force initialization
  11. * @return <tt>klass</tt>
  12. */
  13. public static <T> Class<T> forceInit(Class<T> klass) {
  14.     try {
  15.         Class.forName(klass.getName(), true, klass.getClassLoader());
  16.     } catch (ClassNotFoundException e) {
  17.         throw new AssertionError(e);  // Can't happen
  18.     }
  19.     return klass;
  20. }


The new behavior is a consequence of the fact that the VM now supports class literals in the constant pool. The old behavior remains in classes compiled with a pre-5.0 compiler or with the -target 1.4 flag, even if run in the 5.0 VM.  
 
For more information, see Initialization of Classes and Interfaces (section 12.4) in The Java Language Specification. Note that the language specification hasn't changed; it never listed class literal evaluation as an initialization trigger.  
 


http://java.sun.com/javase/technol [...] bility.jsp


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Gestion des classes statiques par la JVM

 

Sujets relatifs
Problème avec gestion de frames[PHP] Gestion de contenu - Site dynamique
[C++][objet]Opérateur entre deux classesProblème héritage entre 2 classes
gestion d'une liste d'attente ??Script de Gestion de MAJ
[Question de n00b] Export de bdd et gestion des utilisateurs.gestion de la sécurite/intégrité des données
Requête SQL et gestion des datesGestion de projet multi-parties
Plus de sujets relatifs à : Gestion des classes statiques par la JVM


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR