|
Réalisation 
|
|
Class.forName()
|
Bonjour,
Je m'interroge sur la méthode forName() de la classe Class.
Je vois dans l'API:
public static Class forName(String className) throws
ClassNotFoundException
Returns the Class object associated with the class or interface with the
given string name.
[...]A call to forName("X") causes the class named X to be
initialized.
Qu'entend-on dans cette definition par "initialized" ? Appel à toutes les
parties Static ?
J'ai jamais trop compris ce que ça faisait quand j'écrivais:
Class.forName("oracle.jdbc.driver.OracleDriver");
vu que je ne récupére pas l'objet Class de retour.
Merci pour les infos.
Manu
 |
 |
Emmanuel . Duchastenier wrote:
> Bonjour,
> Je m'interroge sur la méthode forName() de la classe Class.
> Je vois dans l'API:
>
> public static Class forName(String className) throws
> ClassNotFoundException
> Returns the Class object associated with the class or interface
> with the given string name.
> [...]A call to forName("X") causes the class named X to be
> initialized.
>
> Qu'entend-on dans cette definition par "initialized" ? Appel à toutes
> les parties Static ?
>
deja chargee si elle ne l'etait pas, par ton classloader...
et donc passage en effet par l'optionnel bloc static et init des
variables static Oui!!!
> J'ai jamais trop compris ce que ça faisait quand j'écrivais:
> Class.forName("oracle.jdbc.driver.OracleDriver");
> vu que je ne récupére pas l'objet Class de retour.
tu n'avais jamais du en eprouver le besoin...
maintenant c'est fait....
a noter que dans le cas du JDBC, ceci a pour effet de faire un register
sur ton driver aupres du drivermanager de maniere automatique, donc en
faire un a la main est redondant!!!!
Jerome
 |
 |
Effectivement, cela charge le classe si c'est le premier appel,
la vérifie, si c'est le premier chargement
et enfin "joue" les partie statique.
Y compris les partie static anonyme du type
static {
<du code>
}
En ce qui concerne les drivers JDBC, cela ajoute la classe
a je-ne-sais-plus-quel manager qui a une collection de driver.
Ce dernier peut l'instancier et l'utiliser.
-----Original Message-----
From: Emmanuel . Duchastenier [mailto:educhastenier@umanis.com]
Sent: mercredi 13 mars 2002 11:24
To: Liste Java (E-mail)
Subject: Class.forName()
Bonjour,
Je m'interroge sur la méthode forName() de la classe Class.
Je vois dans l'API:
public static Class forName(String className) throws
ClassNotFoundException
Returns the Class object associated with the class or interface
with
the given string name.
[...]A call to forName("X") causes the class named X to be
initialized.
Qu'entend-on dans cette definition par "initialized" ? Appel à toutes les
parties Static ?
J'ai jamais trop compris ce que ça faisait quand j'écrivais:
Class.forName("oracle.jdbc.driver.OracleDriver");
vu que je ne récupére pas l'objet Class de retour.
Merci pour les infos.
Manu