Class MethodConstant

    • Constructor Detail

      • MethodConstant

        protected MethodConstant​(MethodDescription.InDefinedShape methodDescription)
        Creates a new method constant.
        Parameters:
        methodDescription - The method description for which the Method representation should be created.
    • Method Detail

      • of

        public static MethodConstant.CanCache of​(MethodDescription.InDefinedShape methodDescription)
        Creates a stack manipulation that loads a method constant onto the operand stack.
        Parameters:
        methodDescription - The method to be loaded onto the stack.
        Returns:
        A stack manipulation that assigns a method constant for the given method description.
      • ofPrivileged

        public static MethodConstant.CanCache ofPrivileged​(MethodDescription.InDefinedShape methodDescription)
        Creates a stack manipulation that loads a method constant onto the operand stack using an AccessController.
        Parameters:
        methodDescription - The method to be loaded onto the stack.
        Returns:
        A stack manipulation that assigns a method constant for the given method description.
      • typeConstantsFor

        protected static java.util.List<StackManipulation> typeConstantsFor​(java.util.List<TypeDescription> parameterTypes)
        Returns a list of type constant load operations for the given list of parameters.
        Parameters:
        parameterTypes - A list of all type descriptions that should be represented as type constant load operations.
        Returns:
        A corresponding list of type constant load operations.
      • isValid

        public boolean isValid()
        Determines if this stack manipulation is valid.
        Specified by:
        isValid in interface StackManipulation
        Returns:
        If false, this manipulation cannot be applied and should throw an exception.
      • apply

        public StackManipulation.Size apply​(org.objectweb.asm.MethodVisitor methodVisitor,
                                            Implementation.Context implementationContext)
        Applies the stack manipulation that is described by this instance.
        Specified by:
        apply in interface StackManipulation
        Parameters:
        methodVisitor - The method visitor used to write the method implementation to.
        implementationContext - The context of the current implementation.
        Returns:
        The changes to the size of the operand stack that are implied by this stack manipulation.
      • privileged

        protected MethodConstant.CanCache privileged()
        Returns a method constant that uses an AccessController to look up this constant.
        Returns:
        A method constant that uses an AccessController to look up this constant.
      • methodName

        protected abstract StackManipulation methodName()
        Returns a stack manipulation that loads the method name onto the operand stack if this is required.
        Returns:
        A stack manipulation that loads the method name onto the operand stack if this is required.
      • accessorMethod

        protected abstract MethodDescription.InDefinedShape accessorMethod()
        Returns the method for loading a declared method or constructor onto the operand stack.
        Returns:
        The method for loading a declared method or constructor onto the operand stack.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object