# Class ConstantUtf8

java.lang.Object
org.apache.bcel.classfile.Constant
org.apache.bcel.classfile.ConstantUtf8

All Implemented Interfaces:
  `Cloneable, Node`

public final class ConstantUtf8 extends Constant
Extends the abstract `Constant` to represent a reference to a UTF-8 encoded string.

The following system properties govern caching this class performs.

- `SYS_PROP_CACHE_MAX_ENTRIES` (since 6.4): The size of the cache, by default 0, meaning caching is disabled.
- `SYS_PROP_CACHE_MAX_ENTRY_SIZE` (since 6.0): The maximum size of the values to cache, by default 200, 0 disables caching. Values larger than this are not cached.
- `SYS_PROP_STATISTICS` (since 6.0): Prints statistics on the console when the JVM exits.

Here is a sample Maven invocation with caching disabled:

    mvn test -Dbcel.statistics=true -Dbcel.maxcached.size=0 -Dbcel.maxcached=0

Here is a sample Maven invocation with caching enabled:

    mvn test -Dbcel.statistics=true -Dbcel.maxcached.size=100000 -Dbcel.maxcached=5000000

See Also:
  - `Constant`

- ## Field Summary

  ### Fields inherited from class Constant

  `tag`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ConstantUtf8(String value)`
  Constructs a ConstantUtf8.
  `ConstantUtf8(ConstantUtf8 constantUtf8)`
  Initializes from another object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `accept(Visitor v)`
  Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class.
  `static void`
  `clearCache()`
  Clears the cache.
  `void`
  `dump(DataOutputStream file)`
  Dumps String in Utf8 format to file stream.
  `String`
  `getBytes()`
  Gets the data converted to string.
  `static ConstantUtf8`
  `getCachedInstance(String value)`
  Gets a new or cached instance of the given value.
  `static ConstantUtf8`
  `getInstance(DataInput dataInput)`
  Gets a new or cached instance of the given value.
  `static ConstantUtf8`
  `getInstance(String value)`
  Gets a new or cached instance of the given value.
  `void`
  `setBytes(String bytes)`
  Deprecated.
  (since 6.0)
  `String`
  `toString()`

  ### Methods inherited from class Constant

  `clone, copy, equals, getComparator, getTag, hashCode, readConstant, setComparator`

  ### Methods inherited from class Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### ConstantUtf8

    public ConstantUtf8(ConstantUtf8 constantUtf8)
    Initializes from another object.
    Parameters:
      `constantUtf8` - the value.

  - ### ConstantUtf8

    public ConstantUtf8(String value)
    Constructs a ConstantUtf8.
    Parameters:
      `value` - Data.

- ## Method Details

  - ### clearCache

    public static void clearCache()
    Clears the cache.
    Since:
      6.4.0

  - ### getCachedInstance

    public static ConstantUtf8 getCachedInstance(String value)
    Gets a new or cached instance of the given value.

    See `ConstantUtf8` class Javadoc for details.

    Parameters:
      `value` - the value.
    Returns:
      a new or cached instance of the given value.
    Since:
      6.0

  - ### getInstance

    public static ConstantUtf8 getInstance(DataInput dataInput) throws IOException
    Gets a new or cached instance of the given value.

    See `ConstantUtf8` class Javadoc for details.

    Parameters:
      `dataInput` - the value.
    Returns:
      a new or cached instance of the given value.
    Throws:
      `IOException` - if an I/O error occurs.
    Since:
      6.0

  - ### getInstance

    public static ConstantUtf8 getInstance(String value)
    Gets a new or cached instance of the given value.

    See `ConstantUtf8` class Javadoc for details.

    Parameters:
      `value` - the value.
    Returns:
      a new or cached instance of the given value.
    Since:
      6.0

  - ### accept

    public void accept(Visitor v)
    Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.
    Specified by:
      `accept` in interface `Node`
    Specified by:
      `accept` in class `Constant`
    Parameters:
      `v` - Visitor object.

  - ### dump

    public void dump(DataOutputStream file) throws IOException
    Dumps String in Utf8 format to file stream.
    Specified by:
      `dump` in class `Constant`
    Parameters:
      `file` - Output file stream.
    Throws:
      `IOException` - if an I/O error occurs.

  - ### getBytes

    public String getBytes()
    Gets the data converted to string.
    Returns:
      Data converted to string.

  - ### setBytes

    @Deprecated public void setBytes(String bytes)
    Deprecated.
    (since 6.0)
    Parameters:
      `bytes` - the raw bytes of this UTF-8.

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Constant`
    Returns:
      String representation.