双括号初始化有利于更好地查看java代码的上下文。
遗憾的是,StringBuilder不能像
那样使用双括号初始化 final String[] array = new String[] {"A", "B"};
System.out.println(new StringBuilder(){{
for (String s : array){
append(s + "\n");
}
}}.toString());
这是一个不错的选择吗?更好的建议? 我对这个问题的意图不是为字符串连接找到方法。我的目的是找到一种使用StringBuilder的双重支撑的方法。
final String[] array = new String[] {"A", "B"};
System.out.println(new Object(){
@Override public String toString(){
StringBuilder stringBuilder = new StringBuilder();
for (String s : array){
stringBuilder.append(s + "\n");
}
return stringBuilder.toString();
}
});
答案 0 :(得分:0)
如果你想要实现的只是从一个字符串数组创建一个字符串,你可以使用Arrays.toString() method:
System.out.println(Arrays.toString(array));
此方法返回指定数组内容的字符串表示形式。
答案 1 :(得分:0)
使用额外的实用程序类可以进行双括号初始化。与
public static class StringBuild{
private StringBuilder stringBuilder = new StringBuilder();
public void append(String string){
stringBuilder.append(string);
}
@Override
public String toString(){
return stringBuilder.toString();
}
}
我可以写
final String[] array = new String[] {"A", "B"};
System.out.println(new StringBuild(){{
for (String s : array){
append(s + "\n");
}
}
});
答案 2 :(得分:0)
替代方法是不可接受的,因为它改变了StringBuilder对象的类。
在你的程序中,第一个选项不起作用,因为StringBuilder是最终的。你无法改变最后的课程。您可以使用以下代码,该代码适用于所有情况。
final String[] array = {"a", "b"};
StringBuilder sb = new StringBuilder(new Object(){
@Override
public String toString() {
String str = "";
for(String st : array){
str+=st;
}
return str;
}
}.toString());
System.out.println(sb);