Laurent For�t:
J'ai un StringBuffer auquelle je fais un append d'un autre StringBuffer, ce
qui compile toujours tr�s bien car StringBuffer �tend la classe Object.
Or l'�x�cution est al�atoire en fonction des jre utiliser. Exemple :
StringBuffer buf1 =new StringBuffer("TITI");
StringBuffer buf2 =new StringBuffer("TOTO");
buf1.append(buf2);  //compile mais plante dans certaine jre.
L'une fait ce qu'on lui demande (appelle la m�thode toString() de buf2 et
append � buf1) , une autre me renverra une exception :
java.lang.NoSuchMethodError.
L'erreur est informatique. Et previsible. Et deterministe. Et reproductible.

Qui est ce qui a raison ? Qui a un avis sur la question ?
Moi. Moi.








Bon plus serieusement. Tu compiles en 1.4 et tu executes en 1.3 d'ou le probleme. En effet, la methode SB.append(SB) est toute nouvelle et n'existe pas en 1.3.

Solutions:
- tu compiles en 1.3
- tu utilises les options -target 1.3 -source 1.3
- tu explicites l'appel: buf1.append((Object)buf2);
- ou encore buf1.append(buf2.toString());

Ou bien tu veux un code performant:
- tu renonces a la compatibilite 1.3
- tu ecris ta propre methode
int la=buf1.length;
char[] ca=new char[la];
buf2.getChars(0,la,ca,0);
buf1.append(ca);
Evidement tu reutilises toujours le meme char[] (synchro ?)

Guillaume
http://www.jdistro.com/




Répondre à