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

text = 'Hello '

добавить

text <<= 'World!'

и это может помочь немного.


Я только что играл со 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-нет. Проверьте это ссылке для получения дополнительной информации.