Groovy supports a literal syntax for creating a StringBuilder/StringBuffer instead of the usual
def sb = new StringBuilder()
However, I can't seem to remember (or find on Google) the correct syntax.
Groovy supports a literal syntax for creating a StringBuilder/StringBuffer instead of the usual
def sb = new StringBuilder()
However, I can't seem to remember (or find on Google) the correct syntax.
String.leftShift() creates a StringBuffer.
AFAICS, you cannot create a StringBuilder via groovy syntax sugar. You can only create a StringBuilder explicitly. No operator overload on String or GString creates a StringBuilder that you can explicitly use. Java String concatenation might create a StringBuilder, but that instance wouldn't be usable in your code.
At the time of writing this answer:
<<=. <<= is merely a java compound assignment that uses <<. In particular, there is no method for overloading <<=.''<<'' //4 single quotes, not double quotes. Double quotes work fine, at least on modern groovy.The following code shows that we always get a StringBuffer, not a StringBuilder, for the result of various combinations of << vs <<= and "" vs '':
def ls = ''<<''
println ls.class
def lse = ''
lse <<=''
println lse.class
ls = ""<<''
println ls.class
lse = ""
lse <<=''
println lse.class
ls = ''<<""
println ls.class
lse = ''
lse <<=""
println lse.class
ls = ""<<""
println ls.class
lse = ""
lse <<=""
println lse.class
prints:
class java.lang.StringBuffer
class java.lang.StringBuffer
class java.lang.StringBuffer
class java.lang.StringBuffer
class java.lang.StringBuffer
class java.lang.StringBuffer
class java.lang.StringBuffer
class java.lang.StringBuffer