public abstract class GString
extends GroovyObjectSupport
implements Buildable, Comparable, CharSequence, Writable, Serializable
Represents a String which contains embedded values such as "hello there ${user} how are you?" which can be evaluated lazily. Advanced users can iterate over the text and values to perform special processing, such as for performing SQL operations, the values can be substituted for ? and the actual value objects can be bound to a JDBC statement.
James Strachan: The lovely name of this class was suggested by Jules Gosnell and was such a good idea, I couldn't resist :)
| Modifiers | Name | Description |
|---|---|---|
static GString |
EMPTY |
A GString containing a single empty String and no values. |
static Object[] |
EMPTY_OBJECT_ARRAY |
Shared empty object array. |
static String[] |
EMPTY_STRING_ARRAY |
Shared empty string array. |
| Type Params | Return Type | Name and description |
|---|---|---|
|
public void |
build(GroovyObject builder)* Builds this object into the supplied builder. * *
|
|
protected int |
calcInitialCapacity()Calculates the initial buffer capacity for rendering this GString. |
|
public char |
charAt(int index)Returns the char value at the specified index. An index ranges from zero
to length() - 1. The first char value of the sequence is at
index zero, the next at index one, and so on, as for array
indexing.
If the
|
|
public int |
compareTo(Object that)Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object. The implementor must ensure signum The implementor must also ensure that the relation is transitive:
Finally, the implementor must ensure that
|
|
public boolean |
equals(Object that)Indicates whether some other object is "equal to" this one.
The
An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.
|
|
public boolean |
equals(GString that)Compares this GString with another GString by rendered content. |
|
public byte[] |
getBytes()Returns the rendered string as a byte array using the platform default charset. |
|
public byte[] |
getBytes(String charset)Returns the rendered string as a byte array using the supplied charset. |
|
public abstract String[] |
getStrings()Returns the string segments surrounding the interpolated values. |
|
public Object |
getValue(int idx)Returns the interpolated value at the supplied index. |
|
public int |
getValueCount()Returns the number of interpolated values. |
|
public Object[] |
getValues()Returns the interpolated values. |
|
public int |
hashCode()Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by HashMap.
The general contract of
|
|
public Object |
invokeMethod(String name, Object args)Overloaded to implement duck typing for Strings so that any method that can't be evaluated on this object will be forwarded to the toString() object instead. |
|
public int |
length()Returns the length of this character sequence. The length is the number of 16-bit chars in the sequence.
|
|
public Pattern |
negate()Turns a String into a regular expression pattern |
|
public GString |
plus(GString that)Concatenates this GString with another GString. |
|
public GString |
plus(String that)Concatenates this GString with a String. |
|
public CharSequence |
subSequence(int start, int end)Returns a CharSequence that is a subsequence of this sequence.
The subsequence starts with the char value at the specified index and
ends with the char value at index end - 1. The length
(in chars) of the
returned sequence is end - start, so if start == end
then an empty sequence is returned.
|
|
public String |
toString()Returns a string representation of the object.
|
|
public Writer |
writeTo(Writer out)* Writes this object to the given writer. * * This is used to defer content creation until the point when it is * streamed to the output destination. Oftentimes, content will be defined * but not necessarily created (as it may be the case with a Closure * definition.) In that case, the output is then 'deferred' to the point * when it is serialized to the writer. This class may be used whenever an * object should be responsible for creating its own textual representation, * but creating the entire output as a single String would be inefficient * (such as outputting a multi-gigabyte XML document.) * *
|
| Methods inherited from class | Name |
|---|---|
class GroovyObjectSupport |
getMetaClass, setMetaClass |
A GString containing a single empty String and no values.
Shared empty object array.
Shared empty string array.
Creates a GString from the supplied values array reference.
values - the interpolated valuesCreates a GString from the supplied values.
values - the interpolated values* Builds this object into the supplied builder. * *
builder - the target builderCalculates the initial buffer capacity for rendering this GString.
Returns the char value at the specified index. An index ranges from zero
to length() - 1. The first char value of the sequence is at
index zero, the next at index one, and so on, as for array
indexing.
If the char value specified by the index is a
surrogate, the surrogate
value is returned.
index argument is negative or not less than
length()index - the index of the char value to be returnedchar valueCompares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
The implementor must ensure signum(x.compareTo(y)) == -signum(y.compareTo(x)) for
all x and y. (This implies that x.compareTo(y) must throw an exception if and only if y.compareTo(x) throws an exception.)
The implementor must also ensure that the relation is transitive:
(x.compareTo(y) > 0 && y.compareTo(z) > 0) implies
x.compareTo(z) > 0.
Finally, the implementor must ensure that x.compareTo(y)==0 implies that signum(x.compareTo(z))
== signum(y.compareTo(z)), for all z.
(x.compareTo(y)==0) == (x.equals(y)). Generally speaking, any
class that implements the Comparable interface and violates
this condition should clearly indicate this fact. The recommended
language is "Note: this class has a natural ordering that is
inconsistent with equals."o - the object to be compared.Indicates whether some other object is "equal to" this one.
The equals method implements an equivalence relation
on non-null object references:
x, x.equals(x) should return
true.
x and y, x.equals(y)
should return true if and only if
y.equals(x) returns true.
x, y, and z, if
x.equals(y) returns true and
y.equals(z) returns true, then
x.equals(z) should return true.
x and y, multiple invocations of
x.equals(y) consistently return true
or consistently return false, provided no
information used in equals comparisons on the
objects is modified.
x,
x.equals(null) should return false.
An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.
equals method for class Object implements
the most discriminating possible equivalence relation on objects;
that is, for any non-null reference values x and
y, this method returns true if and only
if x and y refer to the same object
(x == y has the value true).
In other words, under the reference equality equivalence
relation, each equivalence class only has a single element.hashCode method, which states
that equal objects must have equal hash codes.obj - the reference object with which to compare.true if this object is the same as the obj
argument; false otherwise.Compares this GString with another GString by rendered content.
that - the other GStringtrue if the rendered strings are equalReturns the rendered string as a byte array using the platform default charset.
Returns the rendered string as a byte array using the supplied charset.
charset - the charset nameReturns the string segments surrounding the interpolated values.
Returns the interpolated value at the supplied index.
idx - the value indexReturns the number of interpolated values.
Returns the interpolated values.
Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by HashMap.
The general contract of hashCode is:
hashCode method
must consistently return the same integer, provided no information
used in equals comparisons on the object is modified.
This integer need not remain consistent from one execution of an
application to another execution of the same application.
hashCode method on each of the two objects must produce the
same integer result.
hashCode method on each of the two objects
must produce distinct integer results. However, the programmer
should be aware that producing distinct integer results for
unequal objects may improve the performance of hash tables.
hashCode method defined
by class Object returns distinct integers for distinct objects.Overloaded to implement duck typing for Strings so that any method that can't be evaluated on this object will be forwarded to the toString() object instead.
Returns the length of this character sequence. The length is the number
of 16-bit chars in the sequence.
chars in this sequenceTurns a String into a regular expression pattern
Concatenates this GString with another GString.
that - the other GStringConcatenates this GString with a String.
that - the string to append Returns a CharSequence that is a subsequence of this sequence.
The subsequence starts with the char value at the specified index and
ends with the char value at index end - 1. The length
(in chars) of the
returned sequence is end - start, so if start == end
then an empty sequence is returned.
start or end are negative,
if end is greater than length(),
or if start is greater than endstart - the start index, inclusiveend - the end index, exclusiveReturns a string representation of the object.
toString method returns a string that
"textually represents" this object. The result should
be a concise but informative representation that is easy for a
person to read.
It is recommended that all subclasses override this method.
The string output is not necessarily stable over time or across
JVM invocations.toString method for class Object
returns a string consisting of the name of the class of which the
object is an instance, the at-sign character `@', and
the unsigned hexadecimal representation of the hash code of the
object. In other words, this method returns a string equal to the
value of:
getClass().getName() + '@' + Integer.toHexString(hashCode())
* Writes this object to the given writer. *
* This is used to defer content creation until the point when it is * streamed to the output destination. Oftentimes, content will be defined * but not necessarily created (as it may be the case with a Closure * definition.) In that case, the output is then 'deferred' to the point * when it is serialized to the writer. This class may be used whenever an * object should be responsible for creating its own textual representation, * but creating the entire output as a single String would be inefficient * (such as outputting a multi-gigabyte XML document.) * *
out - the Writer to which this Writable should output its data.
*Copyright © 2003-2026 The Apache Software Foundation. All rights reserved.