Bonjour,

J'ai quelques points "sombres" :

: J'essaie de faire un append sur mon StringBuffer. Lorsque je fais un append d'un objet String je n'ai aucun problème, mais lorsqu'il sagit d'un char il me demande d'intercepter une exception ( IOException ).. Je ne comprend pas pourquoi ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
StringBuffer mySB = new StringBuffer();
mySB.append("c"); // ici aucun problème, pas d'exception à intercepter
mySB.append('c');  // erreur il faut intercepter IOException !
J'utilise WSAD 5.1.1, mon projet utilise la JRE de la SDK 1.5.0_03. J'ai regardé le code source de l'API, sans succès, je ne m'explique pas le pourquoi du comment.

Suite à ça, et à mon exploration de code source, j'ai remarqué que l'API pouvait sûrement être optimisée par une idée toute simple que j'ai eu et que voici:

Tout un tas de tests de validité de paramètres sont effectués en prenant l'exemple du append de StringBuffer.
Voici un exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
public AbstractStringBuilder append(String str) {
	if (str == null) str = "null"; // comparaison = cout CPU
        int len = str.length(); // affectation + appel de méthode = cout CPU
	if (len == 0) return this; // comparaison = cout CPU
        // ici la suite de la méthode...
Mais vous êtes d'accord avec moi, qu'il y a des cas où ces tests sont inutiles : par exemple si la chaine de charactère est une chaine constante et connue. Pourquoi l'API fait-elle quand même les tests dans ces cas là, et ne modifie pas le code "à la compilation" afin que la methode append soit changée en "appendSecure" par exemple, une version de append qui ne ferait pas ces tests de validité ?

Juste une remarque Merci pour toute aide / suggestion,
K