Chaîne de la méthode Append() : StringBuilder vs StringBuffer
J'ai cette méthode ,
public static void main(String[] args) {
String s = "Java";
StringBuilder buffer = new StringBuilder(s);
change(buffer);
System.out.println("What's strBuf.charAt(5)? " + strBuf.charAt(3));
System.out.println(buffer);
}
private static void change(StringBuilder buffer) {
buffer.append(" and HTML");
}
Lorsque j'exécute le code à l'aide de StringBuilder je reçois un message d'erreur ,
"Le constructeur StringBuilder(Chaîne de caractères) n'est pas défini
La méthode charAt(int) n'est pas défini pour le type de StringBuilder"
Sur la proccess de débogage , j'ai essayé de StringBuffer au lieu et cela a fonctionné parfaitement.
Le contenu de l'objet StringBuffer est compilé en Java et Eclipse.."
public static void main(String[] args) {
String s = "Java";
StringBuffer strbuf = new StringBuffer(s);
change(strbuf);
System.out.println("The Stringbuffer.charAt(5) is ? " + strbuf.charAt(3));
System.out.println(strbuf);
}
private static void change(StringBuffer strbuf) {
strbuf.append(" and Eclipse");
}
}
Quelqu'un peut-il m'éclairer pourquoi le dernier"StringBuffer" travaillé et Stringbuilder na pas.
et si ou non il est légal de passer la ficelle dans le dans le StringBuilder constructeur. "StringBuilder(s);"
- Vous avez raison, je vérifie la java docs et il indique que le passage d'une chaîne dans le StringBuilder constructeur est légal, mais il ne marche pas encore dans la version d'eclipse, je suis à l'aide .Toute suggestion.
Vous devez vous connecter pour publier un commentaire.
StringBuilder
ne ont un constructeur acceptant unString
comme argument, et ne ont un.charAt()
méthode (qui il doit mettre en œuvre car elle met en œuvreCharSequence
).Conclusion: c'est un incident de la part de votre IDE, qui n'a pas d'importer le bon
StringBuilder
. Vous utilisez une autre bibliothèque qui a le triste "propriété" de la mise en place d'une classe du même nom, mais pas dans le même package.Aller voir en haut de votre fichier si la ligne d'importation est:
Vous pourriez avoir importé une mauvaise classe StringBuilder au lieu de java.lang.StringBuilder qui a un StringBuilder(String) constructeur et charAt(int) de la méthode.
Pourriez-vous vérifier votre importation. Vous devriez avoir cette
Assurez-vous que vous êtes pas de la définition de votre nom de classe comme
StringBuilder
Par Exemple:
Même si vous l'importer correctement
Mais si vous écrivez votre classe comme
Suggestions
De renommer le nom de la classe à autre chose mais pas
StringBuilder