# Interface Utf8Entry

All Superinterfaces:
  `AnnotationConstantValueEntry, CharSequence, PoolEntry`

public sealed interface Utf8Entry extends CharSequence, AnnotationConstantValueEntry
Models a `CONSTANT_UTF8_info` constant, representing strings, in the constant pool of a `class` file. This describes strings in the Modified UTF-8 format.

The use of a `Utf8Entry` is represented by a `String`. Conversions are through `ConstantPoolBuilder.utf8Entry(String)` and `stringValue()`.

Some uses of `Utf8Entry` represent field or method descriptor strings, symbolically represented as `ClassDesc` or `MethodTypeDesc`, depending on where a `Utf8Entry` appear. Entries representing such uses are created with `ConstantPoolBuilder.utf8Entry(ClassDesc)` and `ConstantPoolBuilder.utf8Entry(MethodTypeDesc)`, and they can be converted to symbolic descriptors on a per-use-site basis, such as in `AnnotationValue.OfClass.classSymbol()` and `MethodModel.methodTypeSymbol()`.

Unlike most constant pool entries, a UTF-8 entry is of flexible length: it is represented as an array structure, with an `u2` for the data length in bytes, followed by that number of bytes of Modified UTF-8 data. It can represent at most 65535 bytes of data due to the physical restrictions.

See Java Virtual Machine Specification:
  4.4.7 The `CONSTANT_Utf8_info` Structure
Since:
  24
See Also:
  - Modified UTF-8

## Field Summary

### Fields declared in interface PoolEntry

`TAG_CLASS, TAG_DOUBLE, TAG_DYNAMIC, TAG_FIELDREF, TAG_FLOAT, TAG_INTEGER, TAG_INTERFACE_METHODREF, TAG_INVOKE_DYNAMIC, TAG_LONG, TAG_METHOD_HANDLE, TAG_METHOD_TYPE, TAG_METHODREF, TAG_MODULE, TAG_NAME_AND_TYPE, TAG_PACKAGE, TAG_STRING, TAG_UTF8`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`equalsString(String s)`
Returns whether this entry describes the same string as the provided string.
`boolean`
`isFieldType(ClassDesc desc)`
Returns whether this entry describes the descriptor string of this field type.
`boolean`
`isMethodType(MethodTypeDesc desc)`
Returns whether this entry describes the descriptor string of this method type.
`String`
`stringValue()`
Returns the string value for this entry.

### Methods declared in interface AnnotationConstantValueEntry

`constantValue`

### Methods declared in interface CharSequence

`charAt, chars, codePoints, getChars, isEmpty, length, subSequence, toString`

### Methods declared in interface PoolEntry

`constantPool, index, tag, width`

## Method Details

### stringValue

String stringValue()
Returns the string value for this entry.

API Note:
  A `Utf8Entry` can be used directly as a `CharSequence` if `String` functionalities are not strictly desired. If only string equivalence is desired, `equalsString` should be used. Reduction of string processing can significantly improve `class` file reading performance.
Returns:
  the string value for this entry
See Also:
  - `ConstantPoolBuilder.utf8Entry(String)`

### equalsString

boolean equalsString(String s)
Returns whether this entry describes the same string as the provided string.

Parameters:
  `s` - the string to compare to
Returns:
  whether this entry describes the same string as the provided string

### isFieldType

boolean isFieldType(ClassDesc desc)
Returns whether this entry describes the descriptor string of this field type.

Parameters:
  `desc` - the field type
Returns:
  whether this entry describes the descriptor string of this field type
Since:
  25

### isMethodType

boolean isMethodType(MethodTypeDesc desc)
Returns whether this entry describes the descriptor string of this method type.

Parameters:
  `desc` - the method type
Returns:
  whether this entry describes the descriptor string of this method type
Since:
  25