java.lang.Object
org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileStruct
org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader
Alle implementierten Schnittstellen:
IBinaryType, IDependent, IGenericType

public class ClassFileReader extends ClassFileStruct implements IBinaryType
  • Felddetails

    • moduleName

      public char[] moduleName
  • Konstruktordetails

    • ClassFileReader

      public ClassFileReader(byte[] classFileBytes, char[] fileName) throws ClassFormatException
      Parameter:
      classFileBytes - Actual bytes of a .class file
      fileName - Actual name of the file that contains the bytes, can be null
      Löst aus:
      ClassFormatException
    • ClassFileReader

      public ClassFileReader(URI path, byte[] classFileBytes, char[] fileName) throws ClassFormatException
      Parameter:
      path - URI pointing to the resource of the .class file
      classFileBytes - Actual bytes of a .class file
      fileName - Actual name of the file that contains the bytes, can be null
      Löst aus:
      ClassFormatException
    • ClassFileReader

      public ClassFileReader(byte[] classFileBytes, char[] fileName, boolean fullyInitialize) throws ClassFormatException
      Parameter:
      classFileBytes - byte[] Actual bytes of a .class file
      fileName - char[] Actual name of the file that contains the bytes, can be null
      fullyInitialize - boolean Flag to fully initialize the new object
      Löst aus:
      ClassFormatException
  • Methodendetails

    • read

      public static ClassFileReader read(File file) throws ClassFormatException, IOException
      Löst aus:
      ClassFormatException
      IOException
    • read

      public static ClassFileReader read(File file, boolean fullyInitialize) throws ClassFormatException, IOException
      Löst aus:
      ClassFormatException
      IOException
    • read

      public static ClassFileReader read(InputStream stream, String fileName) throws ClassFormatException, IOException
      Löst aus:
      ClassFormatException
      IOException
    • read

      public static ClassFileReader read(InputStream stream, String fileName, boolean fullyInitialize) throws ClassFormatException, IOException
      Löst aus:
      ClassFormatException
      IOException
    • read

      public static ClassFileReader read(ZipFile zip, String filename) throws ClassFormatException, IOException
      Löst aus:
      ClassFormatException
      IOException
    • readFromJrt

      public static ClassFileReader readFromJrt(File jrt, IModule module, String filename) throws ClassFormatException, IOException
      Löst aus:
      ClassFormatException
      IOException
    • readFromModule

      public static ClassFileReader readFromModule(File jrt, String moduleName, String filename, Predicate<String> moduleNameFilter) throws ClassFormatException, IOException
      Löst aus:
      ClassFormatException
      IOException
    • read

      public static ClassFileReader read(ZipFile zip, String filename, boolean fullyInitialize) throws ClassFormatException, IOException
      Löst aus:
      ClassFormatException
      IOException
    • read

      public static ClassFileReader read(String fileName) throws ClassFormatException, IOException
      Löst aus:
      ClassFormatException
      IOException
    • read

      public static ClassFileReader read(String fileName, boolean fullyInitialize) throws ClassFormatException, IOException
      Löst aus:
      ClassFormatException
      IOException
    • getNestHost

      public char[] getNestHost()
    • getExternalAnnotationStatus

      public BinaryTypeBinding.ExternalAnnotationStatus getExternalAnnotationStatus()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer whether a provider for external annotations is associated with this binary type.
      Angegeben von:
      getExternalAnnotationStatus in Schnittstelle IBinaryType
    • enrichWithExternalAnnotationsFor

      public ITypeAnnotationWalker enrichWithExternalAnnotationsFor(ITypeAnnotationWalker walker, Object member, LookupEnvironment environment)
      Conditionally add external annotations to the mix. If 'member' is given it must be either of IBinaryField or IBinaryMethod, in which case we're seeking annotations for that member. Otherwise we're seeking annotations for top-level elements of a type (type parameters Ungültige Eingabe: "&" super types).
      Angegeben von:
      enrichWithExternalAnnotationsFor in Schnittstelle IBinaryType
      Parameter:
      walker - previous walker, may be empty, otherwise it will be returned unchanged
      member - if either a IBinaryField or a IBinaryMethod is provided, answer a walker specifically for that member
      environment - for use by the walker
      Gibt zurück:
      either a matching walker with data from external annotations or the walker provided via argument 'walker'.
    • accessFlags

      public int accessFlags()
      Answer the receiver's access flags. The value of the access_flags item is a mask of modifiers used with class and interface declarations.
      Gibt zurück:
      int
    • getAnnotations

      public IBinaryAnnotation[] getAnnotations()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the runtime visible and invisible annotations for this type or null if none.
      Angegeben von:
      getAnnotations in Schnittstelle IBinaryType
      Gibt zurück:
      the annotations or null if there is none.
    • getTypeAnnotations

      public IBinaryTypeAnnotation[] getTypeAnnotations()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the runtime visible and invisible type annotations for this type or null if none.
      Angegeben von:
      getTypeAnnotations in Schnittstelle IBinaryType
      Gibt zurück:
      the type annotations or null if there is none.
    • getConstantPoolOffsets

      public int[] getConstantPoolOffsets()
      Answer the int array that corresponds to all the offsets of each entry in the constant pool
      Gibt zurück:
      int[]
    • getEnclosingMethod

      public char[] getEnclosingMethod()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the enclosing method (including method selector and method descriptor), or null if none. For example, "foo()Ljava/lang/Object;V"
      Angegeben von:
      getEnclosingMethod in Schnittstelle IBinaryType
    • getEnclosingTypeName

      public char[] getEnclosingTypeName()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the resolved name of the enclosing type in the class file format as specified in section 4.2 of the Java 2 VM spec or null if the receiver is a top level type. For example, java.lang.String is java/lang/String.
      Angegeben von:
      getEnclosingTypeName in Schnittstelle IBinaryType
    • getFields

      public IBinaryField[] getFields()
      Answer the receiver's this.fields or null if the array is empty.
      Angegeben von:
      getFields in Schnittstelle IBinaryType
      Gibt zurück:
      org.eclipse.jdt.internal.compiler.api.IBinaryField[]
    • getModule

      public char[] getModule()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the module to which this type belongs. null if the type is associated to the unnamed module.
      Angegeben von:
      getModule in Schnittstelle IBinaryType
      Gibt zurück:
      the module name or null
      Siehe auch:
    • getModuleDeclaration

      public IBinaryModule getModuleDeclaration()
      Returns the module declaration that this class file represents. This will be null for non module-info class files.
      Gibt zurück:
      the module declaration this represents
    • getFileName

      public char[] getFileName()
      Beschreibung aus Schnittstelle kopiert: IDependent
      Answer the file name which defines the type. The path part (optional) must be separated from the actual file proper name by a separator suitable for the type (java.io.File.separator for example), e.g. "c:\\source\\com\\p\\X.java" or "/com/p/Y.java". The path to the zip or jar file (optional) must be separated from the actual path part by JAR_FILE_ENTRY_SEPARATOR, e.g. "c:\\lib\\some.jar|/com/p/X.class" or "/lib/some.zip|/com/q/Y.class". The proper file name includes the suffix extension (e.g. ".java") e.g. "c:/org/eclipse/jdt/internal/compileri/env/IDependent.java" Return null if no file defines the type.
      Angegeben von:
      getFileName in Schnittstelle IDependent
      Siehe auch:
      • Ungültige Referenz
        org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
    • getGenericSignature

      public char[] getGenericSignature()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the receiver's ClassSignature, which describes the type parameters, super class, and super interfaces as specified in section "4.7.9.1 Signatures" of the Java SE 8 VM spec. Returns null if none.
      Angegeben von:
      getGenericSignature in Schnittstelle IBinaryType
      Gibt zurück:
      the receiver's signature, null if none
    • getInnerSourceName

      public char[] getInnerSourceName()
      Answer the source name if the receiver is a inner type. Return null if it is an anonymous class or if the receiver is a top-level class. e.g. public class A { public class B { } public void foo() { class C {} } public Runnable bar() { return new Runnable() { public void run() {} }; } } It returns {'B'} for the member A$B It returns null for A It returns {'C'} for the local class A$1$C It returns null for the anonymous A$1
      Gibt zurück:
      char[]
    • getInterfaceNames

      public char[][] getInterfaceNames()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the resolved names of the receiver's interfaces in the class file format as specified in section 4.2 of the Java 2 VM spec or null if the array is empty. For example, java.lang.String is java/lang/String.
      Angegeben von:
      getInterfaceNames in Schnittstelle IBinaryType
    • getPermittedSubtypeNames

      public char[][] getPermittedSubtypeNames()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the unresolved names of the receiver's permitted sub types or null if the array is empty. A name is a simple name or a qualified, dot separated name. For example, Hashtable or java.util.Hashtable.
      Angegeben von:
      getPermittedSubtypeNames in Schnittstelle IBinaryType
    • getMemberTypes

      public IBinaryNestedType[] getMemberTypes()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the receiver's nested types or null if the array is empty. This nested type info is extracted from the inner class attributes. Ask the name environment to find a member type using its compound name.
      Angegeben von:
      getMemberTypes in Schnittstelle IBinaryType
    • getMemberTypes

      public IBinaryNestedType[] getMemberTypes(boolean keepIncorrectlyNamedInners)
      Answer the receiver's nested types or null if the array is empty. This nested type info is extracted from the inner class attributes. Ask the name environment to find a member type using its compound name
      Gibt zurück:
      org.eclipse.jdt.internal.compiler.api.IBinaryNestedType[]
    • getMethods

      public IBinaryMethod[] getMethods()
      Answer the receiver's this.methods or null if the array is empty.
      Angegeben von:
      getMethods in Schnittstelle IBinaryType
      Gibt zurück:
      org.eclipse.jdt.internal.compiler.api.env.IBinaryMethod[]
    • getMissingTypeNames

      public char[][][] getMissingTypeNames()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the list of missing type names which were referenced from the problem classfile. This list is encoded via an extra attribute.
      Angegeben von:
      getMissingTypeNames in Schnittstelle IBinaryType
    • getModifiers

      public int getModifiers()
      Answer an int whose bits are set according the access constants defined by the VM spec. Set the AccDeprecated and AccSynthetic bits if necessary
      Angegeben von:
      getModifiers in Schnittstelle IGenericType
      Gibt zurück:
      int
    • getName

      public char[] getName()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the resolved name of the type in the class file format as specified in section 4.2 of the Java 2 VM spec. For example, java.lang.String is java/lang/String.
      Angegeben von:
      getName in Schnittstelle IBinaryType
    • getSourceName

      public char[] getSourceName()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the simple name of the type in the class file. For member A$B, will answer B. For anonymous will answer null.
      Angegeben von:
      getSourceName in Schnittstelle IBinaryType
    • getSuperclassName

      public char[] getSuperclassName()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the resolved name of the receiver's superclass in the class file format as specified in section 4.2 of the Java 2 VM spec or null if it does not have one. For example, java.lang.String is java/lang/String.
      Angegeben von:
      getSuperclassName in Schnittstelle IBinaryType
    • getTagBits

      public long getTagBits()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the tagbits set according to the bits for annotations.
      Angegeben von:
      getTagBits in Schnittstelle IBinaryType
    • getVersion

      public long getVersion()
      Answer the major/minor version defined in this class file according to the VM spec. as a long: (majorUngültige Eingabe: "<"Ungültige Eingabe: "<"16)+minor
      Gibt zurück:
      the major/minor version found
    • hasStructuralChanges

      public boolean hasStructuralChanges(byte[] newBytes)
      Check if the receiver has structural changes compare to the byte array in argument. Structural changes are: - modifiers changes for the class, the this.fields or the this.methods - signature changes for this.fields or this.methods. - changes in the number of this.fields or this.methods - changes for field constants - changes for thrown exceptions - change for the super class or any super interfaces. - changes for member types name or modifiers If any of these changes occurs, the method returns true. false otherwise. The synthetic fields are included and the members are not required to be sorted.
      Parameter:
      newBytes - the bytes of the .class file we want to compare the receiver to
      Gibt zurück:
      boolean Returns true is there is a structural change between the two .class files, false otherwise
    • hasStructuralChanges

      public boolean hasStructuralChanges(byte[] newBytes, boolean orderRequired, boolean excludesSynthetic)
      Check if the receiver has structural changes compare to the byte array in argument. Structural changes are: - modifiers changes for the class, the this.fields or the this.methods - signature changes for this.fields or this.methods. - changes in the number of this.fields or this.methods - changes for field constants - changes for thrown exceptions - change for the super class or any super interfaces. - changes for member types name or modifiers If any of these changes occurs, the method returns true. false otherwise.
      Parameter:
      newBytes - the bytes of the .class file we want to compare the receiver to
      orderRequired - a boolean indicating whether the members should be sorted or not
      excludesSynthetic - a boolean indicating whether the synthetic members should be used in the comparison
      Gibt zurück:
      boolean Returns true is there is a structural change between the two .class files, false otherwise
    • isAnonymous

      public boolean isAnonymous()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer true if the receiver is an anonymous class. false otherwise
      Angegeben von:
      isAnonymous in Schnittstelle IBinaryType
    • isBinaryType

      public boolean isBinaryType()
      Beschreibung aus Schnittstelle kopiert: IGenericType
      Answer whether the receiver contains the resolved binary form or the unresolved source form of the type.
      Angegeben von:
      isBinaryType in Schnittstelle IGenericType
    • isLocal

      public boolean isLocal()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer true if the receiver is a local class. false otherwise
      Angegeben von:
      isLocal in Schnittstelle IBinaryType
    • isMember

      public boolean isMember()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer true if the receiver is a member class. false otherwise
      Angegeben von:
      isMember in Schnittstelle IBinaryType
    • isNestedType

      public boolean isNestedType()
      Answer true if the receiver is a nested type, false otherwise
      Gibt zurück:
      boolean
    • sourceFileName

      public char[] sourceFileName()
      Answer the source file name attribute. Return null if there is no source file attribute for the receiver.
      Angegeben von:
      sourceFileName in Schnittstelle IBinaryType
      Gibt zurück:
      char[]
    • toString

      public String toString()
      Setzt außer Kraft:
      toString in Klasse Object
    • isRecord

      public boolean isRecord()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer true if the receiver is a record. false otherwise
      Angegeben von:
      isRecord in Schnittstelle IBinaryType
    • getRecordComponents

      public IRecordComponent[] getRecordComponents()
      Beschreibung aus Schnittstelle kopiert: IBinaryType
      Answer the receiver's record components or null if the array is empty.
      Angegeben von:
      getRecordComponents in Schnittstelle IBinaryType
    • getURI

      public URI getURI()
      Angegeben von:
      getURI in Schnittstelle IBinaryType
    • isStaticInner

      public boolean isStaticInner(char[] innerTypeName)
    • getReferenceBytes

      public byte[] getReferenceBytes()