Java 使用带双大括号初始化的StringBuilder
双大括号初始化有助于更好地了解java代码的上下文 不幸的是,StringBuilder无法与双大括号初始化一起使用,如Java 使用带双大括号初始化的StringBuilder,java,stringbuilder,double-brace-initialize,Java,Stringbuilder,Double Brace Initialize,双大括号初始化有助于更好地了解java代码的上下文 不幸的是,StringBuilder无法与双大括号初始化一起使用,如 final String[] array = new String[] {"A", "B"}; System.out.println(new StringBuilder(){{ for (String s : array){ append(s +
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();
}
});
如果您试图实现的只是从字符串数组创建字符串,则可以使用:
此方法返回指定数组内容的字符串表示形式。可以使用额外的实用程序类进行双括号初始化。与
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");
}
}
});
替代方法不可接受,因为它更改了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);
字符串输出只是我的示例-我想找到使用双大括号初始化的可能性字符串输出只是我的示例-我想找到使用双大括号初始化的可能性StringBuilder用于动态构造各种字符串,双括号init通常用于构造静态常量的完全相反的对象。也许你的实际情况对我来说并不清楚,但你想做的并不正确。这似乎是他自己问题的答案。因此,投票决定不开放。
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);