Guillaume Desnoix wrote:
Dominique Gallot:
Faux,
Mai sis, mais si j'ai raison :))
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.
Faux, � partir de la version 1.17 de jikes, je crois :)
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.
Aussi d'accord
Donc tout le monde a tout faux ;-))
Guillaume
--
Sinon jikes emet un bytecode qui ressemble � �a :
class$(String s, boolean arraytype) {
try {
Class c = Class.forName(s);
return arraytype ? c : c.getComponentType();
} catch (ClassNotFoundException e) {
// this uses exception chaining if you specified -target 1.4.
throw new NoClassDefFoundError("" + e);
}
}
Et A.class correspond � class$(A,false) tandis que
A[].class correspond � class$(A,true).
En effet, un Class.forName() sur un tableau � pour propri�t�
de ne pas initialiser la classe correspondante.
Remi