Использование StringBuilder с двойной инициализацией
Инициализация двойной скобкой хороша для лучшей видимости контекста кода 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();
}
});
3 ответа
Если вы пытаетесь достичь просто создания строки из массива строк, вы можете использовать метод Arrays.toString():
System.out.println(Arrays.toString(array));
Этот метод возвращает строковое представление содержимого указанного массива.
Альтернативный метод неприемлем, потому что он изменил класс объекта 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);
С дополнительным служебным классом возможна двойная инициализация скобки. с
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");
}
}
});