Class ArrayTypeInfo

java.lang.Object
online.sharedtype.processor.domain.type.ArrayTypeInfo
All Implemented Interfaces:
Serializable, TypeInfo

public final class ArrayTypeInfo extends Object implements TypeInfo
Represents an array-like type. During parsing, a predefined array-like type and its subtypes is captured as this class. A type will be recognized as this type with higher priority than ConcreteTypeInfo. It has no counterpart typeDef, explicitly annotating @SharedType on an array type is ignored with a warning.
Predefined array-like types can be configured in global properties. Default is Iterable.
Author:
Cause Chung
See Also:
  • Constructor Details

    • ArrayTypeInfo

      public ArrayTypeInfo()
  • Method Details

    • component

      public TypeInfo component()
    • resolved

      public boolean resolved()
      Description copied from interface: TypeInfo

      Check if this type and its dependency types are resolved.

      When parsing a type's structure, a dependency type is firstly captured as a TypeInfo. At this stage, because we don't know its output structure or if it needs to be output at all, we mark it as unresolved. Also, due to possible cyclic dependencies, the resolution stage needs to be performed after initial parsing state. During resolution, once a type is parsed, it's marked as resolved. Note that a type is marked as resolved when created, if it can be determined at that time.

      Object contains resolved flag as a mutable state

      Specified by:
      resolved in interface TypeInfo
      Returns:
      true is this type and its dependency types are resolved.
    • reify

      public TypeInfo reify(Map<TypeVariableInfo,TypeInfo> mappings)
      Description copied from interface: TypeInfo
      Replace type variables with type arguments.
      Specified by:
      reify in interface TypeInfo
      Parameters:
      mappings - key is a type variable e.g. T value is a type argument, a concrete type e.g. Integer, or a generic type with concrete type parameter, e.g. Tuple<String, String>
      Returns:
      a newly created type info if updated.
    • addReferencingType

      public void addReferencingType(TypeDef typeDef)
      Description copied from interface: TypeInfo
      Mark this type as referenced by another type. Used for e.g. cyclic reference detection.
      Specified by:
      addReferencingType in interface TypeInfo
      Parameters:
      typeDef - type that references this type
    • toString

      public String toString()
      Overrides:
      toString in class Object