java.lang.Object
org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileStruct
org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.MethodInfo
All Implemented Interfaces:
Comparable, IBinaryMethod, IGenericMethod
Direct Known Subclasses:
AnnotationMethodInfo, MethodInfoWithAnnotations

public class MethodInfo extends ClassFileStruct implements IBinaryMethod, Comparable
  • Field Details

    • accessFlags

      protected int accessFlags
    • attributeBytes

      protected int attributeBytes
    • descriptor

      protected char[] descriptor
    • exceptionNames

      protected volatile char[][] exceptionNames
    • name

      protected char[] name
    • signature

      protected char[] signature
    • signatureUtf8Offset

      protected int signatureUtf8Offset
    • tagBits

      protected long tagBits
    • argumentNames

      protected volatile char[][] argumentNames
    • version

      protected long version
  • Constructor Details

    • MethodInfo

      protected MethodInfo(byte[] classFileBytes, int[] offsets, int offset, long version)
      Parameters:
      classFileBytes - byte[]
      offsets - int[]
      offset - int
      version - class file version
  • Method Details

    • createMethod

      public static MethodInfo createMethod(byte[] classFileBytes, int[] offsets, int offset, long version)
    • compareTo

      public int compareTo(Object o)
      Specified by:
      compareTo in interface Comparable
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • getAnnotations

      public IBinaryAnnotation[] getAnnotations()
      Description copied from interface: IBinaryMethod
      Answer the runtime visible and invisible annotations for this method or null if none.
      Specified by:
      getAnnotations in interface IBinaryMethod
    • getArgumentNames

      public char[][] getArgumentNames()
      Description copied from interface: IGenericMethod
      Answer the names of the argument or null if the argument names are not available.
      Specified by:
      getArgumentNames in interface IGenericMethod
      See Also:
      IGenericMethod.getArgumentNames()
    • getDefaultValue

      public Object getDefaultValue()
      Description copied from interface: IBinaryMethod
      Return ClassSignature for a Class Class. Return Constant for compile-time constant of primitive type, as well as String literals. Return EnumConstantSignature if value is an enum constant. Return IBinaryAnnotation for annotation type. Return Object[] for array type.
      Specified by:
      getDefaultValue in interface IBinaryMethod
      Returns:
      default value of this annotation method
    • getExceptionTypeNames

      public char[][] getExceptionTypeNames()
      Description copied from interface: IBinaryMethod
      Answer the resolved names of the exception types 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.
      Specified by:
      getExceptionTypeNames in interface IBinaryMethod
    • getGenericSignature

      public char[] getGenericSignature()
      Description copied from interface: IBinaryMethod
      Answer the receiver's MethodSignature, which describes the type parameters, parameter types, return type, and exception types as specified in "4.7.9.1 Signatures" of the Java SE 8 VM spec.
      Specified by:
      getGenericSignature in interface IBinaryMethod
    • getMethodDescriptor

      public char[] getMethodDescriptor()
      Description copied from interface: IBinaryMethod
      Answer the receiver's method descriptor which describes the parameter & return types as specified in section 4.4.3 of the Java 2 VM spec. For example: - int foo(String) is (Ljava/lang/String;)I - Object[] foo(int) is (I)[Ljava/lang/Object;
      Specified by:
      getMethodDescriptor in interface IBinaryMethod
    • 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
      Specified by:
      getModifiers in interface IGenericMethod
      Returns:
      int
    • getParameterAnnotations

      public IBinaryAnnotation[] getParameterAnnotations(int index, char[] classFileName)
      Description copied from interface: IBinaryMethod
      Answer the annotations on the indexth parameter or null if none
      Specified by:
      getParameterAnnotations in interface IBinaryMethod
      Parameters:
      index - the index of the parameter of interest
      classFileName - (file) name of the declaring class for error reporting
    • getAnnotatedParametersCount

      public int getAnnotatedParametersCount()
      Description copied from interface: IBinaryMethod
      Answer the number of parameter annotations that can be retrieved using IBinaryMethod.getParameterAnnotations(int, char[]).
      Specified by:
      getAnnotatedParametersCount in interface IBinaryMethod
      Returns:
      one beyond the highest legal argument to IBinaryMethod.getParameterAnnotations(int, char[]).
    • getTypeAnnotations

      public IBinaryTypeAnnotation[] getTypeAnnotations()
      Description copied from interface: IBinaryMethod
      Answer the type annotations on this method.
      Specified by:
      getTypeAnnotations in interface IBinaryMethod
    • getSelector

      public char[] getSelector()
      Description copied from interface: IBinaryMethod
      Answer the name of the method. For a constructor, answer & for a clinit method.
      Specified by:
      getSelector in interface IBinaryMethod
    • getTagBits

      public long getTagBits()
      Description copied from interface: IBinaryMethod
      Answer the tagbits set according to the bits for annotations.
      Specified by:
      getTagBits in interface IBinaryMethod
    • initialize

      protected void initialize()
      This method is used to fully initialize the contents of the receiver. All methodinfos, fields infos will be therefore fully initialized and we can get rid of the bytes.
    • isClinit

      public boolean isClinit()
      Answer true if the method is a class initializer, false otherwise.
      Specified by:
      isClinit in interface IBinaryMethod
      Returns:
      boolean
    • isConstructor

      public boolean isConstructor()
      Answer true if the method is a constructor, false otherwise.
      Specified by:
      isConstructor in interface IGenericMethod
      Returns:
      boolean
    • isSynthetic

      public boolean isSynthetic()
      Return true if the field is a synthetic method, false otherwise.
      Returns:
      boolean
    • sizeInBytes

      public int sizeInBytes()
      Answer the size of the receiver in bytes.
      Returns:
      int
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toStringContent

      protected void toStringContent(StringBuffer buffer)