Class ClassFile

  • All Implemented Interfaces:
    javax.lang.model.AnnotatedConstruct, javax.lang.model.element.Element, javax.lang.model.element.Parameterizable, javax.lang.model.element.QualifiedNameable, javax.lang.model.element.TypeElement, Writable
    Direct Known Subclasses:
    SubClass

    public class ClassFile
    extends java.lang.Object
    implements Writable, javax.lang.model.element.TypeElement
    ClassFile wraps java classfile
    • Field Detail

      • magic

        protected int magic
      • minor_version

        protected int minor_version
      • major_version

        protected int major_version
      • constant_pool

        protected java.util.List<ConstantInfo> constant_pool
      • this_class

        protected int this_class
      • super_class

        protected int super_class
      • interfaces

        protected java.util.List<java.lang.Short> interfaces
      • fields

        protected java.util.List<FieldInfo> fields
      • methods

        protected java.util.List<MethodInfo> methods
      • indexedElementMap

        protected java.util.Map<java.lang.Integer,​java.lang.Object> indexedElementMap
      • constantPoolMap

        protected java.util.Map<java.lang.Class<? extends ConstantInfo>,​java.util.List<ConstantInfo>> constantPoolMap
      • constantPoolIndexMap

        protected java.util.Map<ConstantInfo,​java.lang.Integer> constantPoolIndexMap
      • typeParameterMap

        protected java.util.Map<java.lang.String,​javax.lang.model.element.TypeParameterElement> typeParameterMap
      • superClass

        protected javax.lang.model.element.TypeElement superClass
      • modifiers

        protected java.util.Set<javax.lang.model.element.Modifier> modifiers
      • qualifiedName

        protected javax.lang.model.element.Name qualifiedName
      • packageElement

        protected javax.lang.model.element.PackageElement packageElement
      • enclosedElements

        protected java.util.List<javax.lang.model.element.Element> enclosedElements
      • simpleName

        private javax.lang.model.element.Name simpleName
      • synthetic

        private boolean synthetic
    • Constructor Detail

      • ClassFile

        protected ClassFile​(javax.lang.model.element.TypeElement superClass,
                            java.lang.String qualifiedName,
                            javax.lang.model.element.Modifier... modifiers)
      • ClassFile

        public ClassFile​(java.lang.Class<?> cls)
                  throws java.io.IOException
        Throws:
        java.io.IOException
      • ClassFile

        public ClassFile​(byte[] bytes)
                  throws java.io.IOException
        Throws:
        java.io.IOException
      • ClassFile

        public ClassFile​(java.io.InputStream in)
                  throws java.io.IOException
        Throws:
        java.io.IOException
      • ClassFile

        public ClassFile​(java.io.File file)
                  throws java.io.IOException
        Throws:
        java.io.IOException
      • ClassFile

        private ClassFile​(java.io.DataInputStream oin)
                   throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • getConstantPoolSize

        int getConstantPoolSize()
      • getFieldIndex

        int getFieldIndex​(javax.lang.model.element.TypeElement declaringClass,
                          java.lang.String name,
                          javax.lang.model.type.TypeMirror type)
        Returns the constant map index to field
        Parameters:
        declaringClass -
        name -
        type -
        Returns:
      • getFieldIndex

        int getFieldIndex​(javax.lang.model.element.TypeElement declaringClass,
                          java.lang.String name,
                          java.lang.String descriptor)
        Returns the constant map index to field
        Parameters:
        declaringClass -
        name -
        descriptor -
        Returns:
      • getMethodIndex

        int getMethodIndex​(javax.lang.model.element.ExecutableElement method)
        Returns the constant map index to method
        Parameters:
        method -
        Returns:
      • getRefIndex

        protected int getRefIndex​(java.lang.Class<? extends ConstantInfo.Ref> refType,
                                  java.lang.String fullyQualifiedname,
                                  java.lang.String name,
                                  java.lang.String descriptor)
        Returns the constant map index to reference
        Parameters:
        refType -
        fullyQualifiedname -
        name -
        descriptor -
        Returns:
      • getNameIndex

        public int getNameIndex​(java.lang.CharSequence name)
        Returns the constant map index to name
        Parameters:
        name -
        Returns:
      • getNameAndTypeIndex

        public int getNameAndTypeIndex​(java.lang.String name,
                                       java.lang.String descriptor)
        Returns the constant map index to name and type
        Parameters:
        name -
        descriptor -
        Returns:
      • getConstantIndex

        public final int getConstantIndex​(int constant)
        Returns the constant map index to integer constant
        Parameters:
        constant -
        Returns:
      • getConstantIndex

        public final int getConstantIndex​(float constant)
        Returns the constant map index to constant
        Parameters:
        constant -
        Returns:
      • getConstantIndex

        public final int getConstantIndex​(double constant)
        Returns the constant map index to constant
        Parameters:
        constant -
        Returns:
      • getConstantIndex

        public final int getConstantIndex​(long constant)
        Returns the constant map index to constant
        Parameters:
        constant -
        Returns:
      • getConstantIndex

        public final int getConstantIndex​(java.lang.String constant)
        Returns the constant map index to constant
        Parameters:
        constant -
        Returns:
      • addMethodInfo

        protected void addMethodInfo​(MethodInfo methodInfo)
      • addFieldInfo

        protected void addFieldInfo​(FieldInfo fieldInfo)
      • getFields

        protected java.util.List<FieldInfo> getFields()
      • getMethodInfos

        protected java.util.List<MethodInfo> getMethodInfos()
      • getReferencedClassnames

        public java.util.SortedSet<java.lang.String> getReferencedClassnames()
        Returns all classnames (in internal form) that this class references
        Returns:
      • addConstantInfo

        private int addConstantInfo​(ConstantInfo ci)
      • addConstantInfo

        protected int addConstantInfo​(ConstantInfo ci,
                                      int fromIndex)
      • addIndexedElement

        protected void addIndexedElement​(int index,
                                         java.lang.Object type)
      • listConstantInfo

        private java.util.List<ConstantInfo> listConstantInfo​(java.lang.Class<? extends ConstantInfo> cls)
      • addInterface

        public void addInterface​(short intf)
      • addAttribute

        public void addAttribute​(AttributeInfo ai)
        Adds a new attribute
        Parameters:
        ai -
      • getIndexedType

        java.lang.Object getIndexedType​(int index)
        Returns a element from constant map
        Parameters:
        index -
        Returns:
      • getFieldDescription

        public java.lang.String getFieldDescription​(int index)
        Returns a descriptor to fields at index.
        Parameters:
        index -
        Returns:
      • getMethodDescription

        public java.lang.String getMethodDescription​(int index)
        Returns a descriptor to method at index.
        Parameters:
        index -
        Returns:
      • getClassDescription

        public java.lang.String getClassDescription​(int index)
        Returns a descriptor to class at index.
        Parameters:
        index -
        Returns:
      • isImplemented

        public boolean isImplemented​(javax.lang.model.element.ExecutableElement method)
      • referencesMethod

        public boolean referencesMethod​(javax.lang.model.element.ExecutableElement method)
        Return true if class contains method ref to given method
        Parameters:
        method -
        Returns:
      • referencesClass

        public boolean referencesClass​(javax.lang.model.element.TypeElement type)
      • getClassIndex

        protected final int getClassIndex​(javax.lang.model.element.TypeElement type)
      • getClassIndex

        protected final int getClassIndex​(javax.lang.model.type.ArrayType at)
      • getClassIndex

        private final int getClassIndex​(java.lang.String name)
      • getConstantInfo

        public final ConstantInfo getConstantInfo​(int index)
        Return constantInfo at index.
        Parameters:
        index -
        Returns:
      • getString

        public final java.lang.String getString​(int index)
        Return a constant string at index.
        Parameters:
        index -
        Returns:
      • isSynthetic

        public boolean isSynthetic()
      • getQualifiedName

        public javax.lang.model.element.Name getQualifiedName()
        Specified by:
        getQualifiedName in interface javax.lang.model.element.QualifiedNameable
        Specified by:
        getQualifiedName in interface javax.lang.model.element.TypeElement
      • getAnnotationMirrors

        public java.util.List<? extends javax.lang.model.element.AnnotationMirror> getAnnotationMirrors()
        Specified by:
        getAnnotationMirrors in interface javax.lang.model.AnnotatedConstruct
        Specified by:
        getAnnotationMirrors in interface javax.lang.model.element.Element
      • getAnnotation

        public <A extends java.lang.annotation.Annotation> A getAnnotation​(java.lang.Class<A> annotationType)
        Specified by:
        getAnnotation in interface javax.lang.model.AnnotatedConstruct
        Specified by:
        getAnnotation in interface javax.lang.model.element.Element
      • getSuperclass

        public javax.lang.model.type.TypeMirror getSuperclass()
        Specified by:
        getSuperclass in interface javax.lang.model.element.TypeElement
      • getEnclosedElements

        public java.util.List<? extends javax.lang.model.element.Element> getEnclosedElements()
        Specified by:
        getEnclosedElements in interface javax.lang.model.element.Element
        Specified by:
        getEnclosedElements in interface javax.lang.model.element.TypeElement
      • getNestingKind

        public javax.lang.model.element.NestingKind getNestingKind()
        Specified by:
        getNestingKind in interface javax.lang.model.element.TypeElement
      • getSimpleName

        public javax.lang.model.element.Name getSimpleName()
        Specified by:
        getSimpleName in interface javax.lang.model.element.Element
        Specified by:
        getSimpleName in interface javax.lang.model.element.TypeElement
      • getInterfaces

        public java.util.List<? extends javax.lang.model.type.TypeMirror> getInterfaces()
        Specified by:
        getInterfaces in interface javax.lang.model.element.TypeElement
      • getTypeParameters

        public java.util.List<? extends javax.lang.model.element.TypeParameterElement> getTypeParameters()
        Specified by:
        getTypeParameters in interface javax.lang.model.element.Parameterizable
        Specified by:
        getTypeParameters in interface javax.lang.model.element.TypeElement
      • getEnclosingElement

        public javax.lang.model.element.Element getEnclosingElement()
        Specified by:
        getEnclosingElement in interface javax.lang.model.element.Element
        Specified by:
        getEnclosingElement in interface javax.lang.model.element.TypeElement
      • asType

        public javax.lang.model.type.TypeMirror asType()
        Specified by:
        asType in interface javax.lang.model.element.Element
      • getKind

        public javax.lang.model.element.ElementKind getKind()
        Specified by:
        getKind in interface javax.lang.model.element.Element
      • getModifiers

        public java.util.Set<javax.lang.model.element.Modifier> getModifiers()
        Specified by:
        getModifiers in interface javax.lang.model.element.Element
      • accept

        public <R,​P> R accept​(javax.lang.model.element.ElementVisitor<R,​P> v,
                                    P p)
        Specified by:
        accept in interface javax.lang.model.element.Element
      • write

        public void write​(java.io.DataOutput out)
                   throws java.io.IOException
        Specified by:
        write in interface Writable
        Throws:
        java.io.IOException
      • getAnnotationsByType

        public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType​(java.lang.Class<A> annotationType)
        Specified by:
        getAnnotationsByType in interface javax.lang.model.AnnotatedConstruct