Class FieldTypeInfo


  • class FieldTypeInfo
    extends java.lang.Object
    Information on the type of a field.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private static class  FieldTypeInfo.PrimitiveType
      The Enum PrimitiveType.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.lang.reflect.Constructor<?> constructorForFieldTypeWithSizeHint
      The constructor with int-valued size hint for the type of the field, or null if this is not a Collection or Map.
      private java.lang.reflect.Constructor<?> defaultConstructorForFieldType
      The default (no-arg) constructor for the type of the field, or null if this is a primitive field, or if intConstructorForFieldType is non-null.
      (package private) java.lang.reflect.Field field
      The field.
      private java.lang.reflect.Type fieldTypePartiallyResolved
      The type of the field after any concrete type arguments of a specific subclass have been substituted into type parameter variables.
      private boolean hasUnresolvedTypeVariables
      True if the field still has unresolved type variables from the defining subclass.
      private boolean isTypeVariable
      If the type of this field is a type variable, it could be any type, so we need to defer getting and caching the constructor in this case.
      private FieldTypeInfo.PrimitiveType primitiveType
      The index of the type: 0 for non-primitive type; 1-8 for primitive types.
    • Constructor Summary

      Constructors 
      Constructor Description
      FieldTypeInfo​(java.lang.reflect.Field field, java.lang.reflect.Type fieldTypePartiallyResolved, ClassFieldCache classFieldCache)
      Constructor.
    • Field Detail

      • field

        final java.lang.reflect.Field field
        The field.
      • fieldTypePartiallyResolved

        private final java.lang.reflect.Type fieldTypePartiallyResolved
        The type of the field after any concrete type arguments of a specific subclass have been substituted into type parameter variables. There may still be type variables present, if the subclass itself has unresolved type variables.
      • hasUnresolvedTypeVariables

        private final boolean hasUnresolvedTypeVariables
        True if the field still has unresolved type variables from the defining subclass.
      • isTypeVariable

        private final boolean isTypeVariable
        If the type of this field is a type variable, it could be any type, so we need to defer getting and caching the constructor in this case.
      • primitiveType

        private final FieldTypeInfo.PrimitiveType primitiveType
        The index of the type: 0 for non-primitive type; 1-8 for primitive types.
      • constructorForFieldTypeWithSizeHint

        private java.lang.reflect.Constructor<?> constructorForFieldTypeWithSizeHint
        The constructor with int-valued size hint for the type of the field, or null if this is not a Collection or Map.
      • defaultConstructorForFieldType

        private java.lang.reflect.Constructor<?> defaultConstructorForFieldType
        The default (no-arg) constructor for the type of the field, or null if this is a primitive field, or if intConstructorForFieldType is non-null.
    • Constructor Detail

      • FieldTypeInfo

        public FieldTypeInfo​(java.lang.reflect.Field field,
                             java.lang.reflect.Type fieldTypePartiallyResolved,
                             ClassFieldCache classFieldCache)
        Constructor.
        Parameters:
        field - the field
        fieldTypePartiallyResolved - the field type, partially resolved
        classFieldCache - the class field cache
    • Method Detail

      • hasTypeVariables

        private static boolean hasTypeVariables​(java.lang.reflect.Type type)
        Check if the type has type variables.
        Parameters:
        type - the type
        Returns:
        true if the type has type variables.
      • getConstructorForFieldTypeWithSizeHint

        public java.lang.reflect.Constructor<?> getConstructorForFieldTypeWithSizeHint​(java.lang.reflect.Type fieldTypeFullyResolved,
                                                                                       ClassFieldCache classFieldCache)
        Get the constructor with size hint for the field type.
        Parameters:
        fieldTypeFullyResolved - the field type
        classFieldCache - the class field cache
        Returns:
        the constructor with size hint for the field type
      • getDefaultConstructorForFieldType

        public java.lang.reflect.Constructor<?> getDefaultConstructorForFieldType​(java.lang.reflect.Type fieldTypeFullyResolved,
                                                                                  ClassFieldCache classFieldCache)
        Get the default constructor for the field type.
        Parameters:
        fieldTypeFullyResolved - the field type
        classFieldCache - the class field cache
        Returns:
        the default constructor for the field type
      • getFullyResolvedFieldType

        public java.lang.reflect.Type getFullyResolvedFieldType​(TypeResolutions typeResolutions)
        Get the fully resolved field type.
        Parameters:
        typeResolutions - the type resolutions
        Returns:
        the fully resolved field type
      • setFieldValue

        void setFieldValue​(java.lang.Object containingObj,
                           java.lang.Object value)
        Set the field's value, appropriately handling primitive-typed fields.
        Parameters:
        containingObj - the containing object
        value - the field value
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object