Class MethodInfo

  • All Implemented Interfaces:
    Member

    public class MethodInfo
    extends java.lang.Object
    implements Member
    • Field Detail

      • accessFlags

        private final int accessFlags
      • name

        private final java.lang.String name
      • description

        private java.lang.String description
      • code

        private Code code
      • annotations

        private java.util.Map<java.lang.String,​java.util.Map<java.lang.String,​java.lang.Object>> annotations
    • Constructor Detail

      • MethodInfo

        MethodInfo​(java.io.DataInputStream input,
                   ConstantPool constantPool,
                   ClassFile classFile)
            throws java.io.IOException
        Read the method_info structure http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.6 http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#1513
        Parameters:
        input - the stream of the class file
        constantPool - the ConstantPool of the class
        classFile - the declaring class file
        Throws:
        java.io.IOException - if an I/O error occurs
    • Method Detail

      • getDeclaringClassFile

        public ClassFile getDeclaringClassFile()
        Get the declaring class file of the method
        Returns:
        the ClassFile
      • getAccessFlags

        public int getAccessFlags()
        Get the access flags of the method. http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.6-200-A http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#1522
        Returns:
        the flags
      • isStatic

        public boolean isStatic()
        If the method is a static method. http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.6-200-A http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#1522
        Returns:
        true, if static
        See Also:
        getAccessFlags()
      • isNative

        public boolean isNative()
        If the method is native
        Returns:
        true, if abstract
      • isAbstract

        public boolean isAbstract()
        If the method is abstract
        Returns:
        true, if abstract
      • isSynthetic

        public boolean isSynthetic()
        If the method is synthetic
        Returns:
        true, if synthetic
      • isLambda

        public boolean isLambda()
        If the method is a synthetic lambda method
        Returns:
        true, if lambda method
      • getName

        public java.lang.String getName()
        Description copied from interface: Member
        The simple name without package
        Specified by:
        getName in interface Member
        Returns:
        the name
      • getClassName

        public java.lang.String getClassName()
        The class name of the declaring class like "java/lang/Object".
        Specified by:
        getClassName in interface Member
        Returns:
        the class name
      • getAttributes

        public Attributes getAttributes()
        Returns:
        the attributes
      • getCode

        public Code getCode()
                     throws java.io.IOException
        Throws:
        java.io.IOException
      • getType

        public java.lang.String getType()
        Get the signature of the method without generic types.
        Specified by:
        getType in interface Member
        Returns:
        the type
      • getSignature

        public java.lang.String getSignature()
                                      throws java.io.IOException
        Get the signature of the method with generic types.
        Returns:
        the signature
        Throws:
        java.io.IOException - if an I/O error occurs
      • getExceptions

        public Exceptions getExceptions()
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • getAnnotation

        @Nullable
        public java.util.Map<java.lang.String,​java.lang.Object> getAnnotation​(java.lang.String annotation)
                                                                             throws java.io.IOException
        Get a single annotation or null
        Parameters:
        annotation - the class name of the annotation
        Returns:
        the value or null if not exists
        Throws:
        java.io.IOException - if any I/O error occur
      • getConstantPool

        public ConstantPool getConstantPool()
        Get the constant pool of the the current class.
        Returns:
        the constant pool
      • setDeclaringClassFile

        void setDeclaringClassFile​(@Nonnull
                                   java.lang.String origClassName,
                                   @Nonnull
                                   ClassFile classFile)
        Replace the reference to the ClassFile
        Parameters:
        origClassName - the class name that should be replaced.
        classFile - the new value