Class ArrayType

All Implemented Interfaces:
JsonSerializable, JsonSerializableWithType

public final class ArrayType extends TypeBase
Array types represent Java arrays, both primitive and object valued. Further, Object-valued arrays can have element type of any other legal JavaType.
  • Field Details

    • _componentType

      protected final JavaType _componentType
      Type of elements in the array.
    • _emptyArray

      protected final Object _emptyArray
      We will also keep track of shareable instance of empty array, since it usually needs to be constructed any way; and because it is essentially immutable and thus can be shared.
  • Method Details

    • construct

      @Deprecated public static ArrayType construct(JavaType componentType)
      Deprecated.
      Since 1.9, if you must directly instantiate, call method that takes handlers
    • construct

      public static ArrayType construct(JavaType componentType, Object valueHandler, Object typeHandler)
    • withTypeHandler

      public ArrayType withTypeHandler(Object h)
      Description copied from class: JavaType
      "Copy method" that will construct a new instance that is identical to this instance, except that it will have specified type handler assigned.
      Specified by:
      withTypeHandler in class JavaType
      Returns:
      Newly created type instance
    • withContentTypeHandler

      public ArrayType withContentTypeHandler(Object h)
      Description copied from class: JavaType
      "Copy method" that will construct a new instance that is identical to this instance, except that its content type will have specified type handler assigned.
      Specified by:
      withContentTypeHandler in class JavaType
      Returns:
      Newly created type instance
    • withValueHandler

      public ArrayType withValueHandler(Object h)
      Overrides:
      withValueHandler in class JavaType
    • withContentValueHandler

      public ArrayType withContentValueHandler(Object h)
      Overrides:
      withContentValueHandler in class JavaType
    • buildCanonicalName

      protected String buildCanonicalName()
      Specified by:
      buildCanonicalName in class TypeBase
    • _narrow

      protected JavaType _narrow(Class<?> subclass)
      Handling of narrowing conversions for arrays is trickier: for now, it is not even allowed.
      Specified by:
      _narrow in class JavaType
    • narrowContentsBy

      public JavaType narrowContentsBy(Class<?> contentClass)
      For array types, both main type and content type can be modified; but ultimately they are interchangeable.
      Specified by:
      narrowContentsBy in class JavaType
    • widenContentsBy

      public JavaType widenContentsBy(Class<?> contentClass)
      Specified by:
      widenContentsBy in class JavaType
    • isArrayType

      public boolean isArrayType()
      Overrides:
      isArrayType in class JavaType
    • isAbstract

      public boolean isAbstract()
      For some odd reason, modifiers for array classes would claim they are abstract types. Not so, at least for our purposes.
      Overrides:
      isAbstract in class JavaType
    • isConcrete

      public boolean isConcrete()
      For some odd reason, modifiers for array classes would claim they are abstract types. Not so, at least for our purposes.
      Overrides:
      isConcrete in class JavaType
    • hasGenericTypes

      public boolean hasGenericTypes()
      Description copied from class: JavaType
      Method that can be used to find out if the type directly declares generic parameters (for its direct super-class and/or super-interfaces).
      Overrides:
      hasGenericTypes in class JavaType
    • containedTypeName

      public String containedTypeName(int index)
      Not sure what symbolic name is used internally, if any; let's follow naming of Collection types here. Should not really matter since array types have no super types.
      Overrides:
      containedTypeName in class JavaType
      Parameters:
      index - Index of contained type to return
      Returns:
      Contained type at index, or null if no such type exists (no exception thrown)
    • isContainerType

      public boolean isContainerType()
      Specified by:
      isContainerType in class JavaType
      Returns:
      True if type represented is a container type; this includes array, Map and Collection types.
    • getContentType

      public JavaType getContentType()
      Description copied from class: JavaType
      Method for accessing content type of this type, if type has such a thing: simple types do not, structured types do (like arrays, Collections and Maps)
      Overrides:
      getContentType in class JavaType
    • containedTypeCount

      public int containedTypeCount()
      Description copied from class: JavaType
      Method for checking how many contained types this type has. Contained types are usually generic types, so that generic Maps have 2 contained types.
      Overrides:
      containedTypeCount in class JavaType
    • containedType

      public JavaType containedType(int index)
      Description copied from class: JavaType
      Method for accessing definitions of contained ("child") types.
      Overrides:
      containedType in class JavaType
      Parameters:
      index - Index of contained type to return
      Returns:
      Contained type at index, or null if no such type exists (no exception thrown)
    • getGenericSignature

      public StringBuilder getGenericSignature(StringBuilder sb)
      Specified by:
      getGenericSignature in class TypeBase
      Parameters:
      sb - StringBuilder to append signature to
      Returns:
      StringBuilder that was passed in; returned to allow call chaining
    • getErasedSignature

      public StringBuilder getErasedSignature(StringBuilder sb)
      Description copied from class: JavaType
      Method for accessing signature without generic type information, in form compatible with all versions of JVM, and specifically used for type descriptions when generating byte code.
      Specified by:
      getErasedSignature in class TypeBase
      Parameters:
      sb - StringBuilder to append signature to
      Returns:
      StringBuilder that was passed in; returned to allow call chaining
    • toString

      public String toString()
      Specified by:
      toString in class JavaType
    • equals

      public boolean equals(Object o)
      Specified by:
      equals in class JavaType