Groovy литерал StringBuilder/StringBuffer
Groovy поддерживает литеральный синтаксис для создания StringBuilder/StringBuffer вместо обычного
def sb = new StringBuilder()
Однако я не могу вспомнить (или найти в Google) правильный синтаксис.
Ответы
Ответ 1
Чтобы получить StringBuffer за один шаг, вы можете использовать
def sb = 'Hello'<<''
или даже:
def sb = ''<<'' //4 single quotes, not double quotes
для первоначально пустого.
Я думаю (но я мог ошибаться), причина использования StringBuffer, а не StringBuilder заключается в том, чтобы поддерживать совместимость с Java 1.4.
Ответ 2
Чтобы создать StringBuilder
text = 'Hello '
Чтобы добавить
text <<= 'World!'
И это может помочь еще немного.
Ответ 3
Я только что играл с StringBuilder/StringBuffer в Groovy.
Некоторые примеры ниже:
// << operator example
def year = StringBuilder.newInstance()
year << 2
year << "0"
year << '1' << 4
assert year.toString() == "2014"
// You can use with operator
def month = StringBuilder.newInstance()
month.with {
append "0"
append '5'
}
assert month.toString() == "05"
// or just append String like in Java or you can leave parenthesis
def day = StringBuilder.newInstance()
day.append "1"
day.append('1')
assert day.toString() == '11'
// It nice to know, that we can use StringBuilder directly in GString
def date = "$year-${month}-$day"
assert date == "2014-05-11"
Примечание:
Используйте StringBuilder, когда он используется только одним потоком. StringBuilder предоставляет API, совместимый с StringBuffer. StringBuffer синхронизирован, StringBuilder - нет. Для получения дополнительной информации см. Ссылку .