Class BinaryMethod

All Implemented Interfaces:
IAnnotatable, IJavaElement, IMember, IMethod, IParent, ISourceManipulation, ISourceReference, org.eclipse.core.runtime.IAdaptable
Direct Known Subclasses:
ResolvedBinaryMethod

public class BinaryMethod extends BinaryMember implements IMethod
See Also:
  • Field Details

    • parameterTypes

      protected String[] parameterTypes
      The parameter type signatures of the method - stored locally to perform equality test. CharOperation.NO_STRINGS indicates no parameters. Note that the parameter type signatures are expected to be dot-based.
    • erasedParamaterTypes

      protected String[] erasedParamaterTypes
    • parameterNames

      protected String[] parameterNames
      The parameter names for the method.
    • exceptionTypes

      protected String[] exceptionTypes
    • returnType

      protected String returnType
  • Constructor Details

  • Method Details

    • equals

      public boolean equals(Object o)
      Description copied from class: JavaElement
      Returns true if this handle represents the same Java element as the given handle. By default, two handles represent the same element if they are identical or if they represent the same type of element, have equal names, parents, and occurrence counts.

      If a subclass has other requirements for equality, this method must be overridden.

      Overrides:
      equals in class SourceRefElement
      See Also:
    • calculateHashCode

      protected int calculateHashCode()
      Overrides:
      calculateHashCode in class SourceRefElement
    • getAnnotations

      public IAnnotation[] getAnnotations() throws JavaModelException
      Description copied from interface: IAnnotatable
      Returns the annotations for this element. Returns an empty array if this element has no annotations.
      Specified by:
      getAnnotations in interface IAnnotatable
      Overrides:
      getAnnotations in class SourceRefElement
      Returns:
      the annotations of this element, in the order declared in the source, or an empty array if none
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • getParameters

      public ILocalVariable[] getParameters() throws JavaModelException
      Description copied from interface: IMethod
      Returns the parameters of this method.

      An empty array is returned, if the method has no parameters.

      For binary types, associated source is used to retrieve the name range, source range and the flags.

      These local variables can be used to retrieve the parameter annotations.

      Specified by:
      getParameters in interface IMethod
      Returns:
      the parameters of this method
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • getDefaultValue

      public IMemberValuePair getDefaultValue() throws JavaModelException
      Description copied from interface: IMethod
      Returns a member value pair representing the default value of this method if any, or null if this method's parent is not an annotation type, or else if this method does not have a default value.

      Note that IMemberValuePair.getValue() might return null. Please see this method for more details.

      Specified by:
      getDefaultValue in interface IMethod
      Returns:
      a member pair value if any, or null if none
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • getExceptionTypes

      public String[] getExceptionTypes() throws JavaModelException
      Description copied from interface: IMethod
      Returns the type signatures of the exceptions this method throws, in the order declared in the source. Returns an empty array if this method throws no exceptions.

      For example, a source method declaring "throws IOException", would return the array {"QIOException;"}.

      The type signatures may be either unresolved (for source types) or resolved (for binary types), and either basic (for basic types) or rich (for parameterized types). See Signature for details.

      Specified by:
      getExceptionTypes in interface IMethod
      Returns:
      the type signatures of the exceptions this method throws, in the order declared in the source, an empty array if this method throws no exceptions
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
    • getElementType

      public int getElementType()
      Description copied from interface: IJavaElement
      Returns this element's kind encoded as an integer. This is a handle-only method.
      Specified by:
      getElementType in interface IJavaElement
      Returns:
      the kind of element; one of the constants declared in IJavaElement
      See Also:
    • getFlags

      public int getFlags() throws JavaModelException
      Description copied from interface: IMember
      Returns the modifier flags for this member. The flags can be examined using class Flags.

      For binary members, flags from the class file as well as derived flags Flags.AccAnnotationDefault and Flags.AccDefaultMethod are included.

      For source members, only flags as indicated in the source are returned. Thus if an interface defines a method void myMethod();, the flags don't include the 'public' flag. Source flags include Flags.AccAnnotationDefault as well.

      Specified by:
      getFlags in interface IMember
      Overrides:
      getFlags in class Member
      Returns:
      the modifier flags for this member
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
    • getHandleMemento

      protected void getHandleMemento(StringBuilder buff)
      Overrides:
      getHandleMemento in class SourceRefElement
    • getHandleMementoDelimiter

      protected char getHandleMementoDelimiter()
      Description copied from class: JavaElement
      Returns the char that marks the start of this handles contribution to a memento.
      Overrides:
      getHandleMementoDelimiter in class Member
      See Also:
    • getKey

      public String getKey(boolean forceOpen) throws JavaModelException
      Specified by:
      getKey in class BinaryMember
      Throws:
      JavaModelException
      See Also:
      • invalid reference
        org.eclipse.jdt.internal.compiler.lookup.Binding#computeUniqueKey()
    • getNumberOfParameters

      public int getNumberOfParameters()
      Description copied from interface: IMethod
      Returns the number of parameters of this method. This is a handle-only method.
      Specified by:
      getNumberOfParameters in interface IMethod
      Returns:
      the number of parameters of this method
    • getParameterNames

      public String[] getParameterNames() throws JavaModelException
      Description copied from interface: IMethod
      Returns the names of parameters in this method. For binary types, associated source or attached Javadoc are used to retrieve the names. If none can be retrieved, then these names are invented as "arg"+i, where i starts at 0. Returns an empty array if this method has no parameters.

      For example, a method declared as public void foo(String text, int length) would return the array {"text","length"}.

      Specified by:
      getParameterNames in interface IMethod
      Returns:
      the names of parameters in this method, an empty array if this method has no parameters
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • getParameterTypes

      public String[] getParameterTypes()
      Description copied from interface: IMethod
      Returns the type signatures for the parameters of this method. Returns an empty array if this method has no parameters. This is a handle-only method.

      For example, a source method declared as public void foo(String text, int length) would return the array {"QString;","I"}.

      The type signatures may be either unresolved (for source types) or resolved (for binary types), and either basic (for basic types) or rich (for parameterized types). See Signature for details.

      Specified by:
      getParameterTypes in interface IMethod
      Returns:
      the type signatures for the parameters of this method, an empty array if this method has no parameters
      See Also:
    • getTypeParameter

      public ITypeParameter getTypeParameter(String typeParameterName)
      Description copied from interface: IMethod
      Returns the type parameter declared in this method with the given name. This is a handle-only method. The type parameter may or may not exist.
      Specified by:
      getTypeParameter in interface IMethod
      Parameters:
      typeParameterName - the given simple name
      Returns:
      the type parameter declared in this method with the given name
    • getTypeParameters

      public ITypeParameter[] getTypeParameters() throws JavaModelException
      Description copied from interface: IMethod
      Returns the formal type parameters for this method. Returns an empty array if this method has no formal type parameters.
      Specified by:
      getTypeParameters in interface IMethod
      Overrides:
      getTypeParameters in class NamedMember
      Returns:
      the formal type parameters of this method, in the order declared in the source, an empty array if none
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • getTypeParameterSignatures

      public String[] getTypeParameterSignatures() throws JavaModelException
      Deprecated.
      Description copied from interface: IMethod
      Returns the formal type parameter signatures for this method. Returns an empty array if this method has no formal type parameters.

      The formal type parameter signatures may be either unresolved (for source types) or resolved (for binary types). See Signature for details.

      Specified by:
      getTypeParameterSignatures in interface IMethod
      Returns:
      the formal type parameter signatures of this method, in the order declared in the source, an empty array if none
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      Since:
      3.0
      See Also:
    • getRawParameterNames

      public String[] getRawParameterNames() throws JavaModelException
      Description copied from interface: IMethod
      Returns the names of parameters in this method. For binary types, these names are invented as "arg"+i, where i starts at 0 (even if source is associated with the binary or if Javdoc is attached to the binary). Returns an empty array if this method has no parameters.

      For example, a method declared as public void foo(String text, int length) would return the array {"text","length"}. For the same method in a binary, this would return {"arg0", "arg1"}.

      Specified by:
      getRawParameterNames in interface IMethod
      Returns:
      the names of parameters in this method, an empty array if this method has no parameters
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • getReturnType

      public String getReturnType() throws JavaModelException
      Description copied from interface: IMethod
      Returns the type signature of the return value of this method. For constructors, this returns the signature for void.

      For example, a source method declared as public String getName() would return "QString;".

      The type signature may be either unresolved (for source types) or resolved (for binary types), and either basic (for basic types) or rich (for parameterized types). See Signature for details.

      Specified by:
      getReturnType in interface IMethod
      Returns:
      the type signature of the return value of this method, void for constructors
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
    • getSignature

      public String getSignature() throws JavaModelException
      Description copied from interface: IMethod
      Returns the signature of this method. This includes the signatures for the parameter types and return type, but does not include the method name, exception types, or type parameters.

      For example, a source method declared as public void foo(String text, int length) would return "(QString;I)V".

      The type signatures embedded in the method signature may be either unresolved (for source types) or resolved (for binary types), and either basic (for basic types) or rich (for parameterized types). See Signature for details.

      Specified by:
      getSignature in interface IMethod
      Returns:
      the signature of this method
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
    • isConstructor

      public boolean isConstructor() throws JavaModelException
      Description copied from interface: IMethod
      Returns whether this method is a constructor.
      Specified by:
      isConstructor in interface IMethod
      Returns:
      true if this method is a constructor, false otherwise
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • isMainMethod

      public boolean isMainMethod() throws JavaModelException
      Description copied from interface: IMethod
      Returns whether this method is a main method. It is a main method if:
      • its name is equal to "main"
      • its return type is void
      • it is static and public
      • it defines one parameter whose type's simple name is String[]
      Specified by:
      isMainMethod in interface IMethod
      Returns:
      true if this method is a main method, false otherwise
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • isMainMethodCandidate

      public boolean isMainMethodCandidate() throws JavaModelException
      Description copied from interface: IMethod
      Returns whether this method is a main method candidate. It is a main method if:
      • its name is equal to "main"
      • its return type is void
      • it is static and public
      • it defines one parameter whose type's simple name is String[]
      Starting with Java 21 there is "preview feature" that allows instance main methods. It is a main method according to this JEP if:
      • its name is equal to "main"
      • its return type is void
      • it is non-private
      • it defines one parameter whose type's simple name is String[] or no parameter at all
      Specified by:
      isMainMethodCandidate in interface IMethod
      Returns:
      true if this method is a main method, false otherwise
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • isLambdaMethod

      public boolean isLambdaMethod()
      Description copied from interface: IMethod
      Returns whether this method represents a lambda expression.
      Specified by:
      isLambdaMethod in interface IMethod
      Returns:
      true if this method represents a lambda expression, false otherwise.
    • isResolved

      public boolean isResolved()
      Description copied from interface: IMethod
      Returns whether this method represents a resolved method. If a method is resolved, its key contains resolved information.
      Specified by:
      isResolved in interface IMethod
      Returns:
      whether this method represents a resolved method.
    • isSimilar

      public boolean isSimilar(IMethod method)
      Description copied from interface: IMethod
      Returns whether this method is similar to the given method. Two methods are similar if:
      • their element names are equal
      • they have the same number of parameters
      • the simple names of their parameter types are equal
      This is a handle-only method.
      Specified by:
      isSimilar in interface IMethod
      Parameters:
      method - the given method
      Returns:
      true if this method is similar to the given method.
      See Also:
    • readableName

      public String readableName()
      Overrides:
      readableName in class Member
    • resolved

      public JavaElement resolved(Binding binding)
      Overrides:
      resolved in class JavaElement
    • toStringInfo

      protected void toStringInfo(int tab, StringBuilder buffer, Object info, boolean showResolvedInfo)
      Description copied from class: JavaElement
      Debugging purposes
      Overrides:
      toStringInfo in class JavaElement
      Parameters:
      showResolvedInfo - TODO
    • toStringName

      protected void toStringName(StringBuilder buffer)
      Description copied from class: JavaElement
      Debugging purposes
      Overrides:
      toStringName in class SourceRefElement
    • toStringName

      protected void toStringName(StringBuilder buffer, int flags)
    • getAttachedJavadoc

      public String getAttachedJavadoc(org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IJavaElement

      Returns the Javadoc as HTML source if this element has attached Javadoc, null otherwise.

      This should be used only for binary elements. Source elements will always return null.

      The encoding used to read the Javadoc is the one defined by the content type of the file. If none is defined, then the project's encoding of this Java element is used. If the project's encoding cannot be retrieved, then the platform encoding is used.

      In case the Javadoc doesn't exist for this element, null is returned.

      The HTML is extracted from the attached Javadoc and provided as is. No transformation or validation is done.

      Specified by:
      getAttachedJavadoc in interface IJavaElement
      Overrides:
      getAttachedJavadoc in class JavaElement
      Parameters:
      monitor - the given progress monitor, can be null
      Returns:
      the extracted javadoc from the attached javadoc, null if none
      Throws:
      JavaModelException - if:
      • this element does not exist
      • retrieving the attached javadoc fails (timed-out, invalid URL, ...)
      • the format of the javadoc doesn't match expected standards (different anchors,...)
      See Also: