Groovy литерал StringBuilder / StringBuffer
Groovy поддерживает литеральный синтаксис для создания StringBuilder / StringBuffer вместо обычного
def sb = new StringBuilder()
однако я не могу вспомнить (или найти в Google) правильный синтаксис.
3 ответов
чтобы получить StringBuffer за один шаг, вы можете использовать
def sb = 'Hello'<<''
или еще:
def sb = ''<<'' //4 single quotes, not double quotes
для изначально пустого.
Я думаю (но я могу ошибаться), причина использования StringBuffer, а не StringBuilder заключается в поддержании совместимости с Java 1.4.
Я только что играл со 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's 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-нет. Проверьте это ссылке для получения дополнительной информации.