Class GStringImpl

All Implemented Interfaces:
Buildable, GroovyObject, Writable, Serializable, CharSequence, Comparable

public class GStringImpl extends GString
Default implementation of a GString used by the compiler. A GString consists of a list of values and strings which can be combined to create a new String.
See Also:
  • Constructor Details

    • GStringImpl

      public GStringImpl(Object[] values, String[] strings)
      Create a new GString with values and strings.

      Each value is prefixed by a string, after the last value an additional String might be used, hence the following constraint is expected to hold: strings.length == values.length || strings.length == values.length + 1 .

      NOTE: The lengths are not checked but using arrays with lengths which violate the above constraint could result in unpredictable behaviour.

      Parameters:
      values - the value parts
      strings - the string parts
    • GStringImpl

      protected GStringImpl(Object[] values, String[] strings, boolean cacheable, String cachedStringLiteral, boolean frozen)
      Create a new GString with values and strings.

      Each value is prefixed by a string, after the last value an additional String might be used, hence the following constraint is expected to hold: strings.length == values.length || strings.length == values.length + 1 .

      NOTE: The lengths are not checked but using arrays with lengths which violate the above constraint could result in unpredictable behaviour.

      Parameters:
      values - the value parts
      strings - the string parts
      frozen - creates a GStringImpl which is not subject to mutation and hence more amenable to caching
  • Method Details

    • plus

      public GString plus(GString that)
      Overrides:
      plus in class GString
    • writeTo

      public Writer writeTo(Writer out) throws IOException
      Description copied from interface: Writable
      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.)

      Specified by:
      writeTo in interface Writable
      Overrides:
      writeTo in class GString
      Parameters:
      out - the Writer to which this Writable should output its data.
      Returns:
      the Writer that was passed
      Throws:
      IOException - if an error occurred while outputting data to the writer
    • build

      public void build(GroovyObject builder)
      Specified by:
      build in interface Buildable
      Overrides:
      build in class GString
    • calcInitialCapacity

      protected int calcInitialCapacity()
      Overrides:
      calcInitialCapacity in class GString
    • freeze

      public GString freeze()
      Returns:
      returns an equivalent optimised but less mutable version of this GString
    • getStrings

      public String[] getStrings()
      Get the strings of this GString.

      This method returns the same array as used in the constructor. Changing the values will result in changes of the GString. It is generally not recommended to do so.

      Specified by:
      getStrings in class GString
    • getValues

      public Object[] getValues()
      Overrides:
      getValues in class GString
    • trim

      public String trim()
    • isEmpty

      public boolean isEmpty()
    • codePointAt

      public int codePointAt(int index)
    • codePointBefore

      public int codePointBefore(int index)
    • codePointCount

      public int codePointCount(int beginIndex, int endIndex)
    • offsetByCodePoints

      public int offsetByCodePoints(int index, int codePointOffset)
    • getChars

      public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
    • getBytes

      public byte[] getBytes(Charset charset)
    • contentEquals

      public boolean contentEquals(StringBuffer sb)
    • contentEquals

      public boolean contentEquals(CharSequence cs)
    • equalsIgnoreCase

      public boolean equalsIgnoreCase(String anotherString)
    • compareTo

      public int compareTo(String anotherString)
    • compareToIgnoreCase

      public int compareToIgnoreCase(String str)
    • regionMatches

      public boolean regionMatches(int toffset, String other, int ooffset, int len)
    • regionMatches

      public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
    • startsWith

      public boolean startsWith(String prefix, int toffset)
    • startsWith

      public boolean startsWith(String prefix)
    • endsWith

      public boolean endsWith(String suffix)
    • indexOf

      public int indexOf(int ch)
    • indexOf

      public int indexOf(int ch, int fromIndex)
    • lastIndexOf

      public int lastIndexOf(int ch)
    • lastIndexOf

      public int lastIndexOf(int ch, int fromIndex)
    • indexOf

      public int indexOf(String str)
    • indexOf

      public int indexOf(String str, int fromIndex)
    • lastIndexOf

      public int lastIndexOf(String str)
    • lastIndexOf

      public int lastIndexOf(String str, int fromIndex)
    • substring

      public String substring(int beginIndex)
    • substring

      public String substring(int beginIndex, int endIndex)
    • concat

      public String concat(String str)
    • replace

      public String replace(char oldChar, char newChar)
    • matches

      public boolean matches(String regex)
    • contains

      public boolean contains(CharSequence s)
    • replaceFirst

      public String replaceFirst(String regex, String replacement)
    • replaceAll

      public String replaceAll(String regex, String replacement)
    • replace

      public String replace(CharSequence target, CharSequence replacement)
    • split

      public String[] split(String regex, int limit)
    • split

      public String[] split(String regex)
    • toLowerCase

      public String toLowerCase(Locale locale)
    • toLowerCase

      public String toLowerCase()
    • toUpperCase

      public String toUpperCase(Locale locale)
    • toUpperCase

      public String toUpperCase()
    • toCharArray

      public char[] toCharArray()
    • intern

      public String intern()
    • toString

      public String toString()
      Specified by:
      toString in interface CharSequence
      Overrides:
      toString in class GString