Class FieldInfo

  • All Implemented Interfaces:
    HasName, java.lang.Comparable<FieldInfo>

    public class FieldInfo
    extends ClassMemberInfo
    implements java.lang.Comparable<FieldInfo>
    Holds metadata about fields of a class encountered during a scan. All values are taken directly out of the classfile for the class.
    • Field Detail

      • typeSignature

        private transient TypeSignature typeSignature
        The parsed type signature.
      • typeDescriptor

        private transient TypeSignature typeDescriptor
        The parsed type descriptor.
      • constantInitializerValue

        private ObjectTypedValueWrapper constantInitializerValue
        The constant initializer value for the field, if any.
    • Constructor Detail

      • FieldInfo

        FieldInfo()
        Default constructor for deserialization.
      • FieldInfo

        FieldInfo​(java.lang.String definingClassName,
                  java.lang.String fieldName,
                  int modifiers,
                  java.lang.String typeDescriptorStr,
                  java.lang.String typeSignatureStr,
                  java.lang.Object constantInitializerValue,
                  AnnotationInfoList annotationInfo,
                  java.util.List<Classfile.TypeAnnotationDecorator> typeAnnotationDecorators)
        Constructor.
        Parameters:
        definingClassName - The class the field is defined within.
        fieldName - The name of the field.
        modifiers - The field modifiers.
        typeDescriptorStr - The field type descriptor.
        typeSignatureStr - The field type signature.
        constantInitializerValue - The static constant value the field is initialized to, if any.
        annotationInfo - AnnotationInfo for any annotations on the field.
    • Method Detail

      • getModifierStr

        @Deprecated
        public java.lang.String getModifierStr()
        Deprecated.
        Use getModifiersStr() instead.
        Deprecated -- use getModifiersStr() instead.
        Returns:
        The field modifiers, as a string.
      • getModifiersStr

        public java.lang.String getModifiersStr()
        Get the field modifiers as a string, e.g. "public static final". For the modifier bits, call getModifiers().
        Specified by:
        getModifiersStr in class ClassMemberInfo
        Returns:
        The field modifiers, as a string.
      • isTransient

        public boolean isTransient()
        Returns true if this field is a transient field.
        Returns:
        True if the field is transient.
      • isEnum

        public boolean isEnum()
        Returns true if this field is an enum constant.
        Returns:
        True if the field is an enum constant.
      • getTypeDescriptor

        public TypeSignature getTypeDescriptor()
        Returns the parsed type descriptor for the field, which will not include type parameters. If you need generic type parameters, call getTypeSignature() instead.
        Specified by:
        getTypeDescriptor in class ClassMemberInfo
        Returns:
        The parsed type descriptor string for the field.
      • getTypeSignature

        public TypeSignature getTypeSignature()
        Returns the parsed type signature for the field, possibly including type parameters. If this returns null, indicating that no type signature information is available for this field, call getTypeDescriptor() instead.
        Specified by:
        getTypeSignature in class ClassMemberInfo
        Returns:
        The parsed type signature for the field, or null if not available.
        Throws:
        java.lang.IllegalArgumentException - if the field type signature cannot be parsed (this should only be thrown in the case of classfile corruption, or a compiler bug that causes an invalid type signature to be written to the classfile).
      • getTypeSignatureOrTypeDescriptor

        public TypeSignature getTypeSignatureOrTypeDescriptor()
        Returns the type signature for the field, possibly including type parameters. If the type signature is null, indicating that no type signature information is available for this field, returns the type descriptor instead.
        Specified by:
        getTypeSignatureOrTypeDescriptor in class ClassMemberInfo
        Returns:
        The parsed type signature for the field, or if not available, the parsed type descriptor for the field.
      • getConstantInitializerValue

        public java.lang.Object getConstantInitializerValue()
        Returns the constant initializer value of a field. Requires ClassGraph.enableStaticFinalFieldConstantInitializerValues() to have been called. Will only return non-null for fields that have constant initializers, which is usually only fields of primitive type, or String constants. Also note that it is up to the compiler as to whether or not a constant-valued field is assigned as a constant in the field definition itself, or whether it is assigned manually in static or non-static class initializer blocks or the constructor -- so your mileage may vary in being able to extract constant initializer values.
        Returns:
        The initializer value, if this field has a constant initializer value, or null if none.
      • loadClassAndGetField

        public java.lang.reflect.Field loadClassAndGetField()
                                                     throws java.lang.IllegalArgumentException
        Load the class this field is associated with, and get the Field reference for this field.
        Returns:
        The Field reference for this field.
        Throws:
        java.lang.IllegalArgumentException - if the field does not exist.
      • handleRepeatableAnnotations

        void handleRepeatableAnnotations​(java.util.Set<java.lang.String> allRepeatableAnnotationNames)
        Handle Repeatable annotations.
        Parameters:
        allRepeatableAnnotationNames - the names of all repeatable annotations
      • setScanResult

        void setScanResult​(ScanResult scanResult)
        Description copied from class: ScanResultObject
        Set ScanResult backreferences in info objects after scan has completed.
        Overrides:
        setScanResult in class ScanResultObject
        Parameters:
        scanResult - the scan result
      • findReferencedClassInfo

        protected void findReferencedClassInfo​(java.util.Map<java.lang.String,​ClassInfo> classNameToClassInfo,
                                               java.util.Set<ClassInfo> refdClassInfo,
                                               LogNode log)
        Get ClassInfo objects for any classes referenced in the type descriptor or type signature.
        Overrides:
        findReferencedClassInfo in class ScanResultObject
        Parameters:
        classNameToClassInfo - the map from class name to ClassInfo.
        refdClassInfo - the referenced class info
        log - the log
      • equals

        public boolean equals​(java.lang.Object obj)
        Use class name and field name for equals().
        Overrides:
        equals in class java.lang.Object
        Parameters:
        obj - the object to compare to
        Returns:
        true if equal
      • hashCode

        public int hashCode()
        Use hash code of class name and field name.
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        the hashcode
      • compareTo

        public int compareTo​(FieldInfo other)
        Sort in order of class name then field name.
        Specified by:
        compareTo in interface java.lang.Comparable<FieldInfo>
        Parameters:
        other - the other FieldInfo object to compare to.
        Returns:
        the result of comparison.
      • toString

        void toString​(boolean includeModifiers,
                      boolean useSimpleNames,
                      java.lang.StringBuilder buf)
      • toString

        protected void toString​(boolean useSimpleNames,
                                java.lang.StringBuilder buf)
        Description copied from class: ScanResultObject
        Render to string.
        Specified by:
        toString in class ScanResultObject
        Parameters:
        useSimpleNames - if true, use just the simple name of each class.
        buf - the buf