??? C'est pas ce que j'ai dit ?
Integer.class <===> Class.forName("java.lang.Integer"). ( bon � l'exception
pres )
Donc java.lang.Integer.class cr�e une method static ( le compilo decide de
cela tout seul ) qui fait un Class.forName....
Puis change l'exception en NoClassDefFoundError qui descend de Error
plustot que de Exception( ClassNotFoundException ) !
C'est don bien le compilo qui fait tout le travaille !
4) X.class lance une Error et Class.forName("X") une exception.
2 raisons � cela,
- la premier c'est que lors de la compilation la class existait.
- La deuxieme c'est que Error ne doit pas etres catcher alors que
Exception oui --> On presume qu'elle existe parce qu'elle a ete trouver
lors que la compilation.
Donc c'est bien le compilo qui genere un Class.forName .. et ajoute un
changement de type d'exeception !
je ne me souviens plus de la discution pr�cedente mais je pense que ' "�
l'exception pres" ne change pas grand chose !
Dominique
|---------+---------------------------->
| | Guillaume Desnoix|
| | <guillaume@desnoi|
| | x.com> |
| | |
| | 10/01/2003 19:24 |
| | Please respond to|
| | java |
| | |
|---------+---------------------------->
>-------------------------------------------------------------------------------------------------------------------------------|
|
|
| To: [EMAIL PROTECTED]
|
| cc: (bcc: Dominique Gallot/BRU/MASTERCARD)
|
| Subject: Re: Typecasting et tableaux
|
>-------------------------------------------------------------------------------------------------------------------------------|
Dominique Gallot:
> Faux,
> Cette notion n'est qu'un short - cut vers Class.forName()....
> Que le compilateur fait !
On regarde le bytecode et on constate.
1) javac et jikes generent le meme bytecode.
2) X.class et Class.forName("X") ne font pas la meme chose
3) X.class appelle Class.forName() la premiere fois et initialise
4) X.class lance une Error et Class.forName("X") une exception.
Donc tout le monde a tout faux ;-))
Guillaume
--
public class ForName {
private static Class class$Ljava$lang$String;
public static void main(String[] stringArr)
{
// Class class1=String.class
Class class1=(ForName.class$Ljava$lang$String != null)
? ForName.class$Ljava$lang$String
: ForName.class$("java.lang.String");
}
static Class class$(String string)
{
try { return (Class.forName(string)); }
catch (ClassNotFoundException classnotfoundexception)
{
throw new NoClassDefFoundError
(classnotfoundexception.getMessage());
}
}
}