Class Atom

  • All Implemented Interfaces:
    Serializable

    public final class Atom
    extends Object
    implements Serializable
    An utf8-encoded byte string. Atom's are interned (canonicalized) so they may be compared for equality using the "==" operator. Atoms are used to represent names, descriptors, and string literals appearing in a class's constant pool.
    See Also:
    Serialized Form
    • Method Detail

      • findOrCreateUnicodeAtom

        public static Atom findOrCreateUnicodeAtom​(String str)
        Find or create an atom.
        Parameters:
        str - atom value, as string literal whose characters are unicode
        Returns:
        atom
      • findOrCreateAsciiAtom

        public static Atom findOrCreateAsciiAtom​(String str)
        Find or create an atom.
        Parameters:
        str - atom value, as string literal whose characters are from ascii subset of unicode (not including null)
        Returns:
        atom
        Throws:
        IllegalArgumentException - if str is null
      • findOrCreateUtf8Atom

        public static Atom findOrCreateUtf8Atom​(byte[] utf8)
        Find or create an atom.
        Parameters:
        utf8 - atom value, as utf8 encoded bytes
        Returns:
        atom
        Throws:
        IllegalArgumentException - if utf8 is null
      • findOrCreate

        public static Atom findOrCreate​(byte[] bytes)
      • toString

        public final String toString()
        Return printable representation of "this" atom. Does not correctly handle UTF8 translation.
        Overrides:
        toString in class Object
      • left

        public final Atom left​(int count)
        New Atom containing first count bytes
      • right

        public final Atom right​(int count)
        New Atom containing last count bytes
      • startsWith

        public final boolean startsWith​(Atom start)
      • arrayDescriptorFromElementDescriptor

        public final Atom arrayDescriptorFromElementDescriptor()
        Return array descriptor corresponding to "this" array-element descriptor. this: array-element descriptor - something like "I" or "Ljava/lang/Object;"
        Returns:
        array descriptor - something like "[I" or "[Ljava/lang/Object;"
      • isReservedMemberName

        public final boolean isReservedMemberName()
        Is "this" atom a reserved member name? Note: Sun has reserved all member names starting with '<' for future use. At present, only and are used.
      • isClassDescriptor

        public final boolean isClassDescriptor()
        Is "this" atom a class descriptor?
      • isArrayDescriptor

        public final boolean isArrayDescriptor()
        Is "this" atom an array descriptor?
      • length

        public final int length()
      • parseForArrayElementDescriptor

        public final Atom parseForArrayElementDescriptor()
                                                  throws IllegalArgumentException
        Parse "this" array descriptor to obtain descriptor for array's element type. this: array descriptor - something like "[I"
        Returns:
        array element descriptor - something like "I"
        Throws:
        IllegalArgumentException
      • parseForArrayDimensionality

        public final int parseForArrayDimensionality()
                                              throws IllegalArgumentException
        Parse "this" array descriptor to obtain number of dimensions in corresponding array type. this: descriptor - something like "[Ljava/lang/String;" or "[[I"
        Returns:
        dimensionality - something like "1" or "2"
        Throws:
        IllegalStateException - if this Atom does not represent an array
        IllegalArgumentException
      • getValArray

        public byte[] getValArray()
        return an array of bytes representing the utf8 characters in this
      • contains

        public boolean contains​(byte b)
        Returns:
        true iff this atom contains the specified byte
      • rIndex

        public int rIndex​(byte b)