Class MethodDescription.AbstractBase

    • Constructor Detail

      • AbstractBase

        public AbstractBase()
    • Method Detail

      • getStackSize

        public int getStackSize()
        Description copied from interface: MethodDescription
        Returns the size of the local variable array that is required for this method, i.e. the size of all parameters if they were loaded on the stack including a reference to this if this method represented a non-static method.
        Specified by:
        getStackSize in interface MethodDescription
        Returns:
        The size of this method on the operand stack.
      • isMethod

        public boolean isMethod()
        Description copied from interface: MethodDescription
        Checks if this method description represents a method, i.e. not a constructor or a type initializer.
        Specified by:
        isMethod in interface MethodDescription
        Returns:
        true if this method description represents a Java method.
      • isConstructor

        public boolean isConstructor()
        Description copied from interface: MethodDescription
        Checks if this method description represents a constructor.
        Specified by:
        isConstructor in interface MethodDescription
        Returns:
        true if this method description represents a constructor.
      • isTypeInitializer

        public boolean isTypeInitializer()
        Description copied from interface: MethodDescription
        Checks if this method is a type initializer.
        Specified by:
        isTypeInitializer in interface MethodDescription
        Returns:
        true if this method description represents a type initializer.
      • represents

        public boolean represents​(java.lang.reflect.Method method)
        Description copied from interface: MethodDescription
        Verifies if a method description represents a given loaded method.
        Specified by:
        represents in interface MethodDescription
        Parameters:
        method - The method to be checked.
        Returns:
        true if this method description represents the given loaded method.
      • represents

        public boolean represents​(java.lang.reflect.Constructor<?> constructor)
        Description copied from interface: MethodDescription
        Verifies if a method description represents a given loaded constructor.
        Specified by:
        represents in interface MethodDescription
        Parameters:
        constructor - The constructor to be checked.
        Returns:
        true if this method description represents the given loaded constructor.
      • getName

        public java.lang.String getName()
        Description copied from interface: NamedElement.WithRuntimeName
        Returns the internalName of this byte code element.
        Specified by:
        getName in interface NamedElement.WithRuntimeName
        Returns:
        The internalName of this byte code element as visible from within a running Java application.
      • getActualName

        public java.lang.String getActualName()
        Description copied from interface: NamedElement
        Returns the name of this element as it is found in the source code. If no such name exists, an empty string is returned.
        Specified by:
        getActualName in interface NamedElement
        Returns:
        The name of this element as given in a Java program's source code.
      • getDescriptor

        public java.lang.String getDescriptor()
        Description copied from interface: ByteCodeElement
        Returns the descriptor of this byte code element.
        Specified by:
        getDescriptor in interface ByteCodeElement
        Returns:
        The descriptor of this byte code element.
      • getGenericSignature

        public java.lang.String getGenericSignature()
        Description copied from interface: ByteCodeElement
        Returns the generic signature of this byte code element. If this element does not reference generic types or references malformed generic types, null is returned as a signature.
        Specified by:
        getGenericSignature in interface ByteCodeElement
        Returns:
        The generic signature or null if this element is not generic.
      • getActualModifiers

        public int getActualModifiers()
        Description copied from interface: MethodDescription
        Returns this method's actual modifiers as it is present in a class file, i.e. includes a flag if this method is marked Deprecated.
        Specified by:
        getActualModifiers in interface MethodDescription
        Returns:
        The method's actual modifiers.
      • getActualModifiers

        public int getActualModifiers​(boolean manifest)
        Description copied from interface: MethodDescription
        Returns this method's actual modifiers as it is present in a class file, i.e. includes a flag if this method is marked Deprecated and adjusts the modifiers for being abstract or not.
        Specified by:
        getActualModifiers in interface MethodDescription
        Parameters:
        manifest - true if the method should be treated as non-abstract.
        Returns:
        The method's actual modifiers.
      • getActualModifiers

        public int getActualModifiers​(boolean manifest,
                                      Visibility visibility)
        Description copied from interface: MethodDescription
        Returns this method's actual modifiers as it is present in a class file, i.e. includes a flag if this method is marked Deprecated and adjusts the modifiers for being abstract or not. Additionally, this method resolves a required minimal visibility.
        Specified by:
        getActualModifiers in interface MethodDescription
        Parameters:
        manifest - true if the method should be treated as non-abstract.
        visibility - The minimal visibility to enforce for this method.
        Returns:
        The method's actual modifiers.
      • isVisibleTo

        public boolean isVisibleTo​(TypeDescription typeDescription)
        Description copied from interface: ByteCodeElement

        Checks if this element is visible from a given type. Visibility is a wider criteria then accessibility which can be checked by ByteCodeElement.isAccessibleTo(TypeDescription). Visibility allows the invocation of a method on itself or on external instances.

        Note: A method or field might define a signature that includes types that are not visible to a type. Such methods can be legally invoked from this type and can even be implemented as bridge methods by this type. It is however not legal to declare a method with invisible types in its signature that are not bridges what might require additional validation.

        Important: Virtual byte code elements, i.e. virtual methods, are only considered visible if the type they are invoked upon is visible to a given type. The visibility of such virtual members can therefore not be determined by only investigating the invoked method but requires an additional check of the target type.

        Specified by:
        isVisibleTo in interface ByteCodeElement
        Parameters:
        typeDescription - The type which is checked for its visibility of this element.
        Returns:
        true if this element is visible for typeDescription.
      • isAccessibleTo

        public boolean isAccessibleTo​(TypeDescription typeDescription)
        Description copied from interface: ByteCodeElement

        Checks if this element is accessible from a given type. Accessibility is a more narrow criteria then visibility which can be checked by ByteCodeElement.isVisibleTo(TypeDescription). Accessibility allows the invocation of a method on external instances or on itself. Methods that can be invoked from within an instance might however not be considered accessible.

        Note: A method or field might define a signature that includes types that are not visible to a type. Such methods can be legally invoked from this type and can even be implemented as bridge methods by this type. It is however not legal to declare a method with invisible types in its signature that are not bridges what might require additional validation.

        Important: Virtual byte code elements, i.e. virtual methods, are only considered visible if the type they are invoked upon is visible to a given type. The visibility of such virtual members can therefore not be determined by only investigating the invoked method but requires an additional check of the target type.

        Specified by:
        isAccessibleTo in interface ByteCodeElement
        Parameters:
        typeDescription - The type which is checked for its accessibility of this element.
        Returns:
        true if this element is accessible for typeDescription.
      • isVirtual

        public boolean isVirtual()
        Description copied from interface: MethodDescription
        Verifies if this method describes a virtual method, i.e. a method that is inherited by a sub type of this type.
        Specified by:
        isVirtual in interface MethodDescription
        Returns:
        true if this method is virtual.
      • isDefaultMethod

        public boolean isDefaultMethod()
        Description copied from interface: MethodDescription
        Checks if this method represents a default (defender) method.
        Specified by:
        isDefaultMethod in interface MethodDescription
        Returns:
        true if this method is a default method.
      • isSpecializableFor

        public boolean isSpecializableFor​(TypeDescription targetType)
        Description copied from interface: MethodDescription
        Checks if this method can be called using the INVOKESPECIAL for a given type.
        Specified by:
        isSpecializableFor in interface MethodDescription
        Parameters:
        targetType - The type o
        Returns:
        true if this method can be called using the INVOKESPECIAL instruction using the given type.
      • getDefaultValue

        public <T> T getDefaultValue​(java.lang.Class<T> type)
        Description copied from interface: MethodDescription
        Returns the default value but casts it to the given type. If the type differs from the value, a ClassCastException is thrown.
        Specified by:
        getDefaultValue in interface MethodDescription
        Type Parameters:
        T - The type to cast the default value to.
        Parameters:
        type - The type to cast the default value to.
        Returns:
        The casted default value.
      • isInvokableOn

        public boolean isInvokableOn​(TypeDescription typeDescription)
        Description copied from interface: MethodDescription
        Asserts if this method is invokable on an instance of the given type, i.e. the method is an instance method or a constructor and the method is visible to the type and can be invoked on the given instance.
        Specified by:
        isInvokableOn in interface MethodDescription
        Parameters:
        typeDescription - The type to check.
        Returns:
        true if this method is invokable on an instance of the given type.
      • isBootstrap

        public boolean isBootstrap()
        Description copied from interface: MethodDescription
        Checks if the method is a bootstrap method.
        Specified by:
        isBootstrap in interface MethodDescription
        Returns:
        true if the method is a bootstrap method.
      • isBootstrap

        public boolean isBootstrap​(java.util.List<?> arguments)
        Description copied from interface: MethodDescription
        Checks if the method is a bootstrap method that accepts the given arguments.
        Specified by:
        isBootstrap in interface MethodDescription
        Parameters:
        arguments - The arguments that the bootstrap method is expected to accept where primitive values are to be represented as their wrapper types, loaded types by TypeDescription, method handles by JavaConstant.MethodHandle instances and method types by JavaConstant.MethodType instances.
        Returns:
        true if the method is a bootstrap method that accepts the given arguments.
      • isDefaultValue

        public boolean isDefaultValue()
        Description copied from interface: MethodDescription
        Checks if this method is capable of defining a default annotation value.
        Specified by:
        isDefaultValue in interface MethodDescription
        Returns:
        true if it is possible to define a default annotation value for this method.
      • isDefaultValue

        public boolean isDefaultValue​(AnnotationValue<?,​?> annotationValue)
        Description copied from interface: MethodDescription
        Checks if the given value can describe a default annotation value for this method.
        Specified by:
        isDefaultValue in interface MethodDescription
        Parameters:
        annotationValue - The value that describes the default annotation value for this method.
        Returns:
        true if the given value can describe a default annotation value for this method.
      • getEnclosingSource

        public TypeVariableSource getEnclosingSource()
        Description copied from interface: TypeVariableSource
        Returns the enclosing source of type variables that are valid in the scope of this type variable source.
        Specified by:
        getEnclosingSource in interface TypeVariableSource
        Returns:
        The enclosing source or null if no such source exists.
      • accept

        public <T> T accept​(TypeVariableSource.Visitor<T> visitor)
        Description copied from interface: TypeVariableSource
        Applies a visitor on this type variable source.
        Specified by:
        accept in interface TypeVariableSource
        Type Parameters:
        T - The visitor's return type.
        Parameters:
        visitor - The visitor to apply.
        Returns:
        The visitor's return value.
      • isGenerified

        public boolean isGenerified()
        Description copied from interface: TypeVariableSource
        Checks if this type variable source has a generic declaration. This means:
        • A type declares type variables or is an inner class of a type with a generic declaration.
        • A method declares at least one type variable.
        Specified by:
        isGenerified in interface TypeVariableSource
        Returns:
        true if this type code element has a generic declaration.
      • isBridgeCompatible

        public boolean isBridgeCompatible​(MethodDescription.TypeToken typeToken)
        Description copied from interface: MethodDescription
        Validates that the supplied type token can implement a bridge method to this method.
        Specified by:
        isBridgeCompatible in interface MethodDescription
        Parameters:
        typeToken - A type token representing a potential bridge method to this method.
        Returns:
        true if the supplied type token can represent a bridge method to this method.
      • equals

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

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

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object