Class SourceType

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

public class SourceType extends NamedMember implements IType
Handle for a source type. Info object is a SourceTypeElementInfo. Note: Parent is either an IClassFile, an ICompilationUnit or an IType.
See Also:
IType
  • Field Details

    • localOccurrenceCount

      public int localOccurrenceCount
  • Constructor Details

  • Method Details

    • closing

      protected void closing(Object info) throws JavaModelException
      Description copied from class: SourceRefElement
      This element is being closed. Do any necessary cleanup.
      Overrides:
      closing in class SourceRefElement
      Throws:
      JavaModelException
    • codeComplete

      public void codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, ICompletionRequestor requestor) throws JavaModelException
      Deprecated.
      Description copied from interface: IType
      Do code completion inside a code snippet in the context of the current type. If the type has access to its source code and the insertion position is valid, then completion is performed against the source. Otherwise the completion is performed against the type structure and the given locals variables.
      Specified by:
      codeComplete in interface IType
      Parameters:
      snippet - the code snippet
      insertion - the position with in source where the snippet is inserted. This position must not be in comments. A possible value is -1, if the position is not known.
      position - the position within snippet where the user is performing code assist.
      localVariableTypeNames - an array (possibly empty) of fully qualified type names of local variables visible at the current scope
      localVariableNames - an array (possibly empty) of local variable names that are visible at the current scope
      localVariableModifiers - an array (possible empty) of modifiers for local variables
      isStatic - whether the current scope is in a static context
      requestor - the completion requestor
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • codeComplete

      public void codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, ICompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException
      Deprecated.
      Description copied from interface: IType
      Do code completion inside a code snippet in the context of the current type. It considers types in the working copies with the given owner first. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.

      Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.

      If the type has access to its source code and the insertion position is valid, then completion is performed against the source. Otherwise the completion is performed against the type structure and the given locals variables.

      Specified by:
      codeComplete in interface IType
      Parameters:
      snippet - the code snippet
      insertion - the position with in source where the snippet is inserted. This position must not be in comments. A possible value is -1, if the position is not known.
      position - the position with in snippet where the user is performing code assist.
      localVariableTypeNames - an array (possibly empty) of fully qualified type names of local variables visible at the current scope
      localVariableNames - an array (possibly empty) of local variable names that are visible at the current scope
      localVariableModifiers - an array (possible empty) of modifiers for local variables
      isStatic - whether the current scope is in a static context
      requestor - the completion requestor
      owner - the owner of working copies that take precedence over their original compilation units
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • codeComplete

      public void codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, CompletionRequestor requestor) throws JavaModelException
      Description copied from interface: IType
      Do code completion inside a code snippet in the context of the current type. If the type has access to its source code and the insertion position is valid, then completion is performed against the source. Otherwise the completion is performed against the type structure and the given locals variables.
      Specified by:
      codeComplete in interface IType
      Parameters:
      snippet - the code snippet
      insertion - the position with in source where the snippet is inserted. This position must not be in comments. A possible value is -1, if the position is not known.
      position - the position within snippet where the user is performing code assist.
      localVariableTypeNames - an array (possibly empty) of fully qualified type names of local variables visible at the current scope
      localVariableNames - an array (possibly empty) of local variable names that are visible at the current scope
      localVariableModifiers - an array (possible empty) of modifiers for local variables
      isStatic - whether the current scope is in a static context
      requestor - the completion requestor
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • codeComplete

      public void codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, CompletionRequestor requestor, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Do code completion inside a code snippet in the context of the current type. If the type has access to its source code and the insertion position is valid, then completion is performed against the source. Otherwise the completion is performed against the type structure and the given locals variables.

      If IProgressMonitor is not null then some proposals which can be very long to compute are proposed. To avoid that the code assist operation take too much time a IProgressMonitor which automatically cancel the code assist operation when a specified amount of time is reached could be used.

       new IProgressMonitor() {
           private final static int TIMEOUT = 500; //ms
           private long endTime;
           public void beginTask(String name, int totalWork) {
               fEndTime= System.currentTimeMillis() + TIMEOUT;
           }
           public boolean isCanceled() {
               return endTime <= System.currentTimeMillis();
           }
           ...
       };
       

      Specified by:
      codeComplete in interface IType
      Parameters:
      snippet - the code snippet
      insertion - the position with in source where the snippet is inserted. This position must not be in comments. A possible value is -1, if the position is not known.
      position - the position within snippet where the user is performing code assist.
      localVariableTypeNames - an array (possibly empty) of fully qualified type names of local variables visible at the current scope
      localVariableNames - an array (possibly empty) of local variable names that are visible at the current scope
      localVariableModifiers - an array (possible empty) of modifiers for local variables
      isStatic - whether the current scope is in a static context
      requestor - the completion requestor
      monitor - the progress monitor used to report progress
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • codeComplete

      public void codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, CompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException
      Description copied from interface: IType
      Do code completion inside a code snippet in the context of the current type. It considers types in the working copies with the given owner first. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.

      Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.

      If the type has access to its source code and the insertion position is valid, then completion is performed against the source. Otherwise the completion is performed against the type structure and the given locals variables.

      Specified by:
      codeComplete in interface IType
      Parameters:
      snippet - the code snippet
      insertion - the position with in source where the snippet is inserted. This position must not be in comments. A possible value is -1, if the position is not known.
      position - the position with in snippet where the user is performing code assist.
      localVariableTypeNames - an array (possibly empty) of fully qualified type names of local variables visible at the current scope
      localVariableNames - an array (possibly empty) of local variable names that are visible at the current scope
      localVariableModifiers - an array (possible empty) of modifiers for local variables
      isStatic - whether the current scope is in a static context
      requestor - the completion requestor
      owner - the owner of working copies that take precedence over their original compilation units
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • codeComplete

      public void codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, CompletionRequestor requestor, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Do code completion inside a code snippet in the context of the current type. It considers types in the working copies with the given owner first. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.

      Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.

      If the type has access to its source code and the insertion position is valid, then completion is performed against the source. Otherwise the completion is performed against the type structure and the given locals variables.

      If IProgressMonitor is not null then some proposals which can be very long to compute are proposed. To avoid that the code assist operation take too much time a IProgressMonitor which automatically cancel the code assist operation when a specified amount of time is reached could be used.

       new IProgressMonitor() {
           private final static int TIMEOUT = 500; //ms
           private long endTime;
           public void beginTask(String name, int totalWork) {
               endTime= System.currentTimeMillis() + TIMEOUT;
           }
           public boolean isCanceled() {
               return endTime <= System.currentTimeMillis();
           }
           ...
       };
       

      Specified by:
      codeComplete in interface IType
      Parameters:
      snippet - the code snippet
      insertion - the position with in source where the snippet is inserted. This position must not be in comments. A possible value is -1, if the position is not known.
      position - the position with in snippet where the user is performing code assist.
      localVariableTypeNames - an array (possibly empty) of fully qualified type names of local variables visible at the current scope
      localVariableNames - an array (possibly empty) of local variable names that are visible at the current scope
      localVariableModifiers - an array (possible empty) of modifiers for local variables
      isStatic - whether the current scope is in a static context
      requestor - the completion requestor
      owner - the owner of working copies that take precedence over their original compilation units
      monitor - the progress monitor used to report progress
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • createField

      public IField createField(String contents, IJavaElement sibling, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a field in this type with the given contents.

      Optionally, the new element can be positioned before the specified sibling. If no sibling is specified, the element will be inserted as the last field declaration in this type.

      It is possible that a field with the same name already exists in this type. The value of the force parameter affects the resolution of such a conflict:

      • true - in this case the field is created with the new contents
      • false - in this case a JavaModelException is thrown
      Specified by:
      createField in interface IType
      Parameters:
      contents - the given contents
      sibling - the given sibling
      force - a flag in case the same name already exists in this type
      monitor - the given progress monitor
      Returns:
      a field in this type with the given contents
      Throws:
      JavaModelException - if the element could not be created. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • A CoreException occurred while updating an underlying resource
      • The specified sibling is not a child of this type (INVALID_SIBLING)
      • The contents could not be recognized as a field declaration (INVALID_CONTENTS)
      • This type is read-only (binary) (READ_ONLY)
      • There was a naming collision with an existing field (NAME_COLLISION)
      See Also:
      IType
    • createInitializer

      public IInitializer createInitializer(String contents, IJavaElement sibling, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a static initializer in this type with the given contents.

      Optionally, the new element can be positioned before the specified sibling. If no sibling is specified, the new initializer is positioned after the last existing initializer declaration, or as the first member in the type if there are no initializers.

      Specified by:
      createInitializer in interface IType
      Parameters:
      contents - the given contents
      sibling - the given sibling
      monitor - the given progress monitor
      Returns:
      a static initializer in this type with the given contents
      Throws:
      JavaModelException - if the element could not be created. Reasons include:
      • This element does not exist
      • A CoreException occurred while updating an underlying resource
      • The specified sibling is not a child of this type (INVALID_SIBLING)
      • The contents could not be recognized as an initializer declaration (INVALID_CONTENTS)
      • This type is read-only (binary) (READ_ONLY)
      See Also:
      IType
    • createMethod

      public IMethod createMethod(String contents, IJavaElement sibling, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a method or constructor in this type with the given contents.

      Optionally, the new element can be positioned before the specified sibling. If no sibling is specified, the element will be appended to this type.

      It is possible that a method with the same signature already exists in this type. The value of the force parameter affects the resolution of such a conflict:

      • true - in this case the method is created with the new contents
      • false - in this case a JavaModelException is thrown
      Specified by:
      createMethod in interface IType
      Parameters:
      contents - the given contents
      sibling - the given sibling
      force - a flag in case the same name already exists in this type
      monitor - the given progress monitor
      Returns:
      a method or constructor in this type with the given contents
      Throws:
      JavaModelException - if the element could not be created. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • A CoreException occurred while updating an underlying resource
      • The specified sibling is not a child of this type (INVALID_SIBLING)
      • The contents could not be recognized as a method or constructor declaration (INVALID_CONTENTS)
      • This type is read-only (binary) (READ_ONLY)
      • There was a naming collision with an existing method (NAME_COLLISION)
      See Also:
      IType
    • createType

      public IType createType(String contents, IJavaElement sibling, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a type in this type with the given contents.

      Optionally, the new type can be positioned before the specified sibling. If no sibling is specified, the type will be appended to this type.

      It is possible that a type with the same name already exists in this type. The value of the force parameter affects the resolution of such a conflict:

      • true - in this case the type is created with the new contents
      • false - in this case a JavaModelException is thrown
      Specified by:
      createType in interface IType
      Parameters:
      contents - the given contents
      sibling - the given sibling
      force - a flag in case the same name already exists in this type
      monitor - the given progress monitor
      Returns:
      a type in this type with the given contents
      Throws:
      JavaModelException - if the element could not be created. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • A CoreException occurred while updating an underlying resource
      • The specified sibling is not a child of this type (INVALID_SIBLING)
      • The contents could not be recognized as a type declaration (INVALID_CONTENTS)
      • This type is read-only (binary) (READ_ONLY)
      • There was a naming collision with an existing field (NAME_COLLISION)
      See Also:
      IType
    • 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:
      Object.equals(java.lang.Object)
    • findMethods

      public IMethod[] findMethods(IMethod method)
      Description copied from interface: IType
      Finds the methods in this type that correspond to the given method. A method m1 corresponds to another method m2 if:
      • m1 has the same element name as m2.
      • m1 has the same number of arguments as m2 and the simple names of the argument types must be equals.
      • m1 exists.
      Specified by:
      findMethods in interface IType
      Parameters:
      method - the given method
      Returns:
      the found method or null if no such methods can be found.
    • 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.
    • getChildrenForCategory

      public IJavaElement[] getChildrenForCategory(String category) throws JavaModelException
      Description copied from interface: IType
      Returns the children of this type that have the given category as a @category tag. Returns an empty array if no children with this category exist.

      The results are listed in the order in which they appear in the source or class file.

      Specified by:
      getChildrenForCategory in interface IType
      Returns:
      the children for the given category.
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • getDeclaringType

      public IType getDeclaringType()
      Description copied from interface: IMember
      Returns the type in which this member is declared, or null if this member is not declared in a type (for example, a top-level type). This is a handle-only method.
      Specified by:
      getDeclaringType in interface IMember
      Overrides:
      getDeclaringType in class Member
      Returns:
      the type in which this member is declared, or null if this member is not declared in a type (for example, a top-level type)
      See Also:
      IMember
    • getClassFile

      public IOrdinaryClassFile getClassFile()
      Description copied from interface: IMember
      Returns the class file in which this member is declared, or null if this member is not declared in a class file (for example, a source type). This is a handle-only method.
      Specified by:
      getClassFile in interface IMember
      Specified by:
      getClassFile in interface IType
      Overrides:
      getClassFile in class Member
      Returns:
      the class file in which this member is declared, or null if this member is not declared in a class file (for example, a source type)
      See Also:
      IMember
    • 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:
      IJavaElement
    • getField

      public IField getField(String fieldName)
      Description copied from interface: IType
      Returns the field with the specified name in this type (for example, "bar"). This is a handle-only method. The field may or may not exist.
      Specified by:
      getField in interface IType
      Parameters:
      fieldName - the given name
      Returns:
      the field with the specified name in this type
      See Also:
      IType.getField(java.lang.String)
    • getFields

      public IField[] getFields() throws JavaModelException
      Description copied from interface: IType
      Returns the fields declared by this type in the order in which they appear in the source or class file. For binary types, this includes synthetic fields. This does not include the implicit fields representing record components.
      Specified by:
      getFields in interface IType
      Returns:
      the fields declared by this type
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • getRecordComponents

      public IField[] getRecordComponents() throws JavaModelException
      Description copied from interface: IType
      Returns the record components declared by this record class, or an empty array if this is not a record.
      Specified by:
      getRecordComponents in interface IType
      Returns:
      record components declared by this record class
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • getPermittedSubtypeNames

      public String[] getPermittedSubtypeNames() throws JavaModelException
      Description copied from interface: IType
      Returns the names of types that this sealed type permits to be its sub types. For a non sealed type, an empty array is returned. If type declares an explicit permits clause, then the permitted sub-types are returned in the declared order. If a sealed type does not explicitly declare permitted sub types, then the implicit permitted types, that is, the types in the same compilation unit that are sub types of this sealed type are returned in the order they appear within the compilation unit.
      Specified by:
      getPermittedSubtypeNames in interface IType
      Returns:
      names of types that this type permits to be its sub types
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • getRecordComponent

      public IField getRecordComponent(String compName)
      Description copied from interface: IType
      Returns the record component with the specified name in this type (for example, "bar"). This is a handle-only method. The record component may or may not exist.
      Specified by:
      getRecordComponent in interface IType
      Parameters:
      compName - the given name
      Returns:
      the record component with the specified name in this record
    • getFullyQualifiedName

      public String getFullyQualifiedName()
      Description copied from interface: IType
      Returns the fully qualified name of this type, including qualification for any containing types and packages. This is the name of the package, followed by '.', followed by the type-qualified name.

      Note: The enclosing type separator used in the type-qualified name is '$', not '.'.

      This method is fully equivalent to getFullyQualifiedName('$'). This is a handle-only method.
      Specified by:
      getFullyQualifiedName in interface IType
      Returns:
      the fully qualified name of this type
      See Also:
      IType.getFullyQualifiedName()
    • getFullyQualifiedName

      public String getFullyQualifiedName(char enclosingTypeSeparator)
      Description copied from interface: IType
      Returns the fully qualified name of this type, including qualification for any containing types and packages. This is the name of the package, followed by '.', followed by the type-qualified name using the enclosingTypeSeparator. For example:
      • the fully qualified name of a class B defined as a member of a class A in a compilation unit A.java in a package x.y using the '.' separator is "x.y.A.B"
      • the fully qualified name of a class B defined as a member of a class A in a compilation unit A.java in a package x.y using the '$' separator is "x.y.A$B"
      • the fully qualified name of a binary type whose class file is x/y/A$B.class using the '.' separator is "x.y.A.B"
      • the fully qualified name of a binary type whose class file is x/y/A$B.class using the '$' separator is "x.y.A$B"
      • the fully qualified name of an anonymous binary type whose class file is x/y/A$1.class using the '.' separator is "x.y.A.1"
      This is a handle-only method.
      Specified by:
      getFullyQualifiedName in interface IType
      Parameters:
      enclosingTypeSeparator - the given enclosing type separator
      Returns:
      the fully qualified name of this type, including qualification for any containing types and packages
      See Also:
      IType.getFullyQualifiedName(char)
    • getFullyQualifiedParameterizedName

      public String getFullyQualifiedParameterizedName() throws JavaModelException
      Description copied from interface: IType
      Returns this type's fully qualified name using a '.' enclosing type separator followed by its type parameters between angle brackets if it is a generic type. For example, "p.X<T>", "java.util.Map<java.lang.String, p.X>"
      Specified by:
      getFullyQualifiedParameterizedName in interface IType
      Returns:
      the fully qualified parameterized representation of this type
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • getOccurrenceCountSignature

      protected String getOccurrenceCountSignature()
      Overrides:
      getOccurrenceCountSignature in class NamedMember
    • getHandleFromMemento

      public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner)
      Overrides:
      getHandleFromMemento in class Member
    • getInitializer

      public IInitializer getInitializer(int count)
      Description copied from interface: IType
      Returns the initializer with the specified position relative to the order they are defined in the source. Numbering starts at 1 (thus the first occurrence is occurrence 1, not occurrence 0). This is a handle-only method. The initializer may or may not be present.
      Specified by:
      getInitializer in interface IType
      Parameters:
      count - the specified position
      Returns:
      the initializer with the specified position relative to the order they are defined in the source
      See Also:
      IType
    • getInitializers

      public IInitializer[] getInitializers() throws JavaModelException
      Description copied from interface: IType
      Returns the initializers declared by this type. For binary types this is an empty collection. For source types, the results are listed in the order in which they appear in the source.
      Specified by:
      getInitializers in interface IType
      Returns:
      the initializers declared by this type
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • getKey

      public String getKey()
      Description copied from interface: IType
      Returns the binding key for this type only if the given type is resolved. A binding key is a key that uniquely identifies this type. It allows access to generic info for parameterized types.

      If the given type is not resolved, the returned key is simply the java element's key.

      Specified by:
      getKey in interface IType
      Returns:
      the binding key for this type
      See Also:
      IBinding.getKey(), BindingKey, IType.isResolved()
    • getMethod

      public IMethod getMethod(String selector, String[] parameterTypeSignatures)
      Description copied from interface: IType
      Returns the method with the specified name and parameter types in this type (for example, "foo", {"I", "QString;"}). To get the handle for a constructor, the name specified must be the simple name of the enclosing type. This is a handle-only method. The method may or may not be present.

      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. Note that the parameter type signatures for binary methods are expected to be dot-based.

      Specified by:
      getMethod in interface IType
      Parameters:
      selector - the given name
      parameterTypeSignatures - the given parameter types
      Returns:
      the method with the specified name and parameter types in this type
      See Also:
      IType.getMethod(java.lang.String, java.lang.String[])
    • getMethods

      public IMethod[] getMethods() throws JavaModelException
      Description copied from interface: IType
      Returns the methods and constructors declared by this type. For binary types, this may include the special <clinit> method and synthetic methods.

      The results are listed in the order in which they appear in the source or class file.

      Specified by:
      getMethods in interface IType
      Returns:
      the methods and constructors declared by this type
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • getPackageFragment

      public IPackageFragment getPackageFragment()
      Description copied from interface: IType
      Returns the package fragment in which this element is defined. This is a handle-only method.
      Specified by:
      getPackageFragment in interface IType
      Overrides:
      getPackageFragment in class NamedMember
      Returns:
      the package fragment in which this element is defined
      See Also:
      IType
    • getPrimaryElement

      public IJavaElement getPrimaryElement(boolean checkOwner)
      Overrides:
      getPrimaryElement in class JavaElement
    • getSuperclassName

      public String getSuperclassName() throws JavaModelException
      Description copied from interface: IType
      Returns the name of this type's superclass, or null for source types that do not specify a superclass.

      For interfaces, the superclass name is always "java.lang.Object". For source types, the name as declared is returned, for binary types, the resolved, qualified name is returned. For anonymous types, the superclass name is the name appearing after the 'new' keyword'. If the superclass is a parameterized type, the string may include its type arguments enclosed in "<>". If the returned string is needed for anything other than display purposes, use IType.getSuperclassTypeSignature() which returns a structured type signature string containing more precise information.

      Specified by:
      getSuperclassName in interface IType
      Returns:
      the name of this type's superclass, or null for source types that do not specify a superclass
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • getSuperclassTypeSignature

      public String getSuperclassTypeSignature() throws JavaModelException
      Description copied from interface: IType
      Returns the type signature of this type's superclass, or null if none.

      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:
      getSuperclassTypeSignature in interface IType
      Returns:
      the type signature of this type's superclass, or null 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:
      IType.getSuperclassTypeSignature()
    • getSuperInterfaceNames

      public String[] getSuperInterfaceNames() throws JavaModelException
      Description copied from interface: IType
      Returns the names of interfaces that this type implements or extends, in the order in which they are listed in the source.

      For classes, this gives the interfaces that this class implements. For interfaces, this gives the interfaces that this interface extends. An empty collection is returned if this type does not implement or extend any interfaces. For source types, simple names are returned, for binary types, qualified names are returned. For anonymous types, an empty collection is always returned. If the list of supertypes includes parameterized types, the string may include type arguments enclosed in "<>". If the result is needed for anything other than display purposes, use IType.getSuperInterfaceTypeSignatures() which returns structured signature strings containing more precise information.

      Specified by:
      getSuperInterfaceNames in interface IType
      Returns:
      the names of interfaces that this type implements or extends, in the order in which they are listed in the source, an empty collection if none
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • getSuperInterfaceTypeSignatures

      public String[] getSuperInterfaceTypeSignatures() throws JavaModelException
      Description copied from interface: IType
      Returns the type signatures of the interfaces that this type implements or extends, in the order in which they are listed in the source.

      For classes and enum types, this gives the interfaces that this class implements. For interfaces and annotation types, this gives the interfaces that this interface extends. An empty collection is returned if this type does not implement or extend any interfaces. For anonymous types, an empty collection is always returned.

      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:
      getSuperInterfaceTypeSignatures in interface IType
      Returns:
      the type signatures of interfaces that this type implements or extends, in the order in which they are listed in the source, an empty collection 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:
      IType.getSuperInterfaceTypeSignatures()
    • getTypeParameters

      public ITypeParameter[] getTypeParameters() throws JavaModelException
      Description copied from interface: IType
      Returns the formal type parameters for this type. Returns an empty array if this type has no formal type parameters.
      Specified by:
      getTypeParameters in interface IType
      Overrides:
      getTypeParameters in class NamedMember
      Returns:
      the formal type parameters of this type, 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
      Description copied from interface: IType
      Returns the formal type parameter signatures for this type. Returns an empty array if this type 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 IType
      Returns:
      the formal type parameter signatures of this type, 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:
      IType.getTypeParameterSignatures()
    • getType

      public IType getType(String typeName)
      Description copied from interface: IType
      Returns the member type declared in this type with the given simple name. This is a handle-only method. The type may or may not exist.
      Specified by:
      getType in interface IType
      Parameters:
      typeName - the given simple name
      Returns:
      the member type declared in this type with the given simple name
      See Also:
      IType
    • getTypeParameter

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

      public String getTypeQualifiedName()
      Description copied from interface: IType
      Returns the type-qualified name of this type, including qualification for any enclosing types, but not including package qualification. For source types, this consists of the simple names of any enclosing types, separated by '$', followed by the simple name of this type or the occurrence count of this type if it is anonymous. For binary types, this is the name of the class file without the ".class" suffix. This method is fully equivalent to getTypeQualifiedName('$'). This is a handle-only method.
      Specified by:
      getTypeQualifiedName in interface IType
      Returns:
      the type-qualified name of this type
      See Also:
      IType.getTypeQualifiedName()
    • getTypeQualifiedName

      public String getTypeQualifiedName(char enclosingTypeSeparator)
      Description copied from interface: IType
      Returns the type-qualified name of this type, including qualification for any enclosing types, but not including package qualification. For source types, this consists of the simple names of any enclosing types, separated by enclosingTypeSeparator, followed by the simple name of this type or the occurrence count of this type if it is anonymous. For binary types, this is the name of the class file without the ".class" suffix, and - since 3.4 - the '$' characters in the class file name are replaced with the enclosingTypeSeparator character. For example:
      • the type qualified name of a class B defined as a member of a class A using the '.' separator is "A.B"
      • the type qualified name of a class B defined as a member of a class A using the '$' separator is "A$B"
      • the type qualified name of a binary type whose class file is A$B.class using the '.' separator is "A.B"
      • the type qualified name of a binary type whose class file is A$B.class using the '$' separator is "A$B"
      • the type qualified name of an anonymous binary type whose class file is A$1.class using the '.' separator is "A.1"
      This is a handle-only method.
      Specified by:
      getTypeQualifiedName in interface IType
      Parameters:
      enclosingTypeSeparator - the specified enclosing type separator
      Returns:
      the type-qualified name of this type
      See Also:
      IType.getTypeQualifiedName(char)
    • getTypes

      public IType[] getTypes() throws JavaModelException
      Description copied from interface: IType
      Returns the immediate member types declared by this type. The results are listed in the order in which they appear in the source or class file.
      Specified by:
      getTypes in interface IType
      Returns:
      the immediate member types declared by this type
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • isAnonymous

      public boolean isAnonymous()
      Description copied from interface: IType
      Returns whether this type represents an anonymous type.
      Specified by:
      isAnonymous in interface IType
      Returns:
      true if this type represents an anonymous type, false otherwise
      See Also:
      IType.isAnonymous()
    • isClass

      public boolean isClass() throws JavaModelException
      Description copied from interface: IType
      Returns whether this type represents a class.

      Note that a class can neither be an interface, an enumeration class, nor an annotation type.

      Specified by:
      isClass in interface IType
      Returns:
      true if this type represents a class, false otherwise
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • isEnum

      public boolean isEnum() throws JavaModelException
      Description copied from interface: IType
      Returns whether this type represents an enumeration class.

      Note that an enumeration class can neither be a class, an interface, nor an annotation type.

      Specified by:
      isEnum in interface IType
      Returns:
      true if this type represents an enumeration class, false otherwise
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      Since:
      3.0
      See Also:
      IType.isEnum()
    • isRecord

      public boolean isRecord() throws JavaModelException
      Description copied from interface: IType
      Returns whether this type represents a record class.

      Note that a record class can neither be an enumeration, an interface, nor an annotation type.

      Specified by:
      isRecord in interface IType
      Returns:
      true if this type represents a record class, false otherwise
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      Since:
      3.26
      See Also:
      IType.isRecord()
    • isSealed

      public boolean isSealed() throws JavaModelException
      Description copied from interface: IType
      Returns whether this type is a sealed type.
      Specified by:
      isSealed in interface IType
      Returns:
      true if this type this type is a sealed type, false otherwise
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType.isSealed()
    • isInterface

      public boolean isInterface() throws JavaModelException
      Description copied from interface: IType
      Returns whether this type represents an interface.

      Note that an interface can also be an annotation type, but it can neither be a class nor an enumeration class.

      Specified by:
      isInterface in interface IType
      Returns:
      true if this type represents an interface, false otherwise
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • isAnnotation

      public boolean isAnnotation() throws JavaModelException
      Description copied from interface: IType
      Returns whether this type represents an annotation type.

      Note that an annotation type is also an interface, but it can neither be a class nor an enumeration class.

      Specified by:
      isAnnotation in interface IType
      Returns:
      true if this type represents an annotation type, false otherwise
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      Since:
      3.0
      See Also:
      IType.isAnnotation()
    • isLocal

      public boolean isLocal()
      Description copied from interface: IType
      Returns whether this type represents a local type. For an anonymous type, this method returns true.

      Note: This deviates from JLS3 14.3, which states that anonymous types are not local types since they do not have a name.

      Specified by:
      isLocal in interface IType
      Returns:
      true if this type represents a local type, false otherwise
      See Also:
      IType.isLocal()
    • isMember

      public boolean isMember()
      Description copied from interface: IType
      Returns whether this type represents a member type.
      Specified by:
      isMember in interface IType
      Returns:
      true if this type represents a member type, false otherwise
      See Also:
      IType.isMember()
    • isResolved

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

      public ITypeHierarchy loadTypeHierachy(InputStream input, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Loads a previously saved ITypeHierarchy from an input stream. A type hierarchy can be stored using ITypeHierachy#store(OutputStream). Only hierarchies originally created by the following methods can be loaded:
      • IType#newSupertypeHierarchy(IProgressMonitor)
      • IType#newTypeHierarchy(IJavaProject, IProgressMonitor)
      • IType#newTypeHierarchy(IProgressMonitor)
      Specified by:
      loadTypeHierachy in interface IType
      Parameters:
      input - stream where hierarchy will be read
      monitor - the given progress monitor
      Returns:
      the stored hierarchy
      Throws:
      JavaModelException - if the hierarchy could not be restored, reasons include: - type is not the focus of the hierarchy or - unable to read the input stream (wrong format, IOException during reading, ...)
      See Also:
      IType
    • loadTypeHierachy

      public ITypeHierarchy loadTypeHierachy(InputStream input, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      NOTE: This method is not part of the API has it is not clear clients would easily use it: they would need to first make sure all working copies for the given owner exist before calling it. This is especially har at startup time. In case clients want this API, here is how it should be specified:

      Loads a previously saved ITypeHierarchy from an input stream. A type hierarchy can be stored using ITypeHierachy#store(OutputStream). A compilation unit of a loaded type has the given owner if such a working copy exists, otherwise the type's compilation unit is a primary compilation unit. Only hierarchies originally created by the following methods can be loaded:

      • IType#newSupertypeHierarchy(IProgressMonitor)
      • IType#newSupertypeHierarchy(WorkingCopyOwner, IProgressMonitor)
      • IType#newTypeHierarchy(IJavaProject, IProgressMonitor)
      • IType#newTypeHierarchy(IJavaProject, WorkingCopyOwner, IProgressMonitor)
      • IType#newTypeHierarchy(IProgressMonitor)
      • IType#newTypeHierarchy(WorkingCopyOwner, IProgressMonitor)
      Parameters:
      input - stream where hierarchy will be read
      monitor - the given progress monitor
      Returns:
      the stored hierarchy
      Throws:
      JavaModelException - if the hierarchy could not be restored, reasons include: - type is not the focus of the hierarchy or - unable to read the input stream (wrong format, IOException during reading, ...)
      Since:
      3.0
      See Also:
      ITypeHierarchy.store(java.io.OutputStream, IProgressMonitor)
    • newSupertypeHierarchy

      public ITypeHierarchy newSupertypeHierarchy(org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a type hierarchy for this type containing this type and all of its supertypes.
      Specified by:
      newSupertypeHierarchy in interface IType
      Parameters:
      monitor - the given progress monitor
      Returns:
      a type hierarchy for this type containing this type and all of its supertypes
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • newSupertypeHierarchy

      public ITypeHierarchy newSupertypeHierarchy(ICompilationUnit[] workingCopies, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a type hierarchy for this type containing this type and all of its supertypes, considering types in the given working copies. In other words, the list of working copies will take precedence over their original compilation units in the workspace.

      Note that passing an empty working copy will be as if the original compilation unit had been deleted.

      Specified by:
      newSupertypeHierarchy in interface IType
      Parameters:
      workingCopies - the working copies that take precedence over their original compilation units
      monitor - the given progress monitor
      Returns:
      a type hierarchy for this type containing this type and all of its supertypes
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • newSupertypeHierarchy

      public ITypeHierarchy newSupertypeHierarchy(IWorkingCopy[] workingCopies, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Deprecated.
      Description copied from interface: IType
      Creates and returns a type hierarchy for this type containing this type and all of its supertypes, considering types in the given working copies. In other words, the list of working copies will take precedence over their original compilation units in the workspace.

      Note that passing an empty working copy will be as if the original compilation unit had been deleted.

      Specified by:
      newSupertypeHierarchy in interface IType
      Parameters:
      workingCopies - the working copies that take precedence over their original compilation units
      monitor - the given progress monitor
      Returns:
      a type hierarchy for this type containing this type and all of its supertypes
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType.newSupertypeHierarchy(IWorkingCopy[], IProgressMonitor)
    • newSupertypeHierarchy

      public ITypeHierarchy newSupertypeHierarchy(WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a type hierarchy for this type containing this type and all of its supertypes, considering types in the working copies with the given owner. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.

      Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.

      Specified by:
      newSupertypeHierarchy in interface IType
      Parameters:
      owner - the owner of working copies that take precedence over their original compilation units
      monitor - the given progress monitor
      Returns:
      a type hierarchy for this type containing this type and all of its supertypes
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType.newSupertypeHierarchy(WorkingCopyOwner, IProgressMonitor)
    • newTypeHierarchy

      public ITypeHierarchy newTypeHierarchy(IJavaProject project, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the context of the given project.
      Specified by:
      newTypeHierarchy in interface IType
      Parameters:
      project - the given project
      monitor - the given progress monitor
      Returns:
      a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the context of the given project
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • newTypeHierarchy

      public ITypeHierarchy newTypeHierarchy(IJavaProject project, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the context of the given project, considering types in the working copies with the given owner. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.

      Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.

      Specified by:
      newTypeHierarchy in interface IType
      Parameters:
      project - the given project
      owner - the owner of working copies that take precedence over their original compilation units
      monitor - the given progress monitor
      Returns:
      a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the context of the given project
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType.newTypeHierarchy(IJavaProject, WorkingCopyOwner, IProgressMonitor)
    • newTypeHierarchy

      public ITypeHierarchy newTypeHierarchy(org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the workspace.
      Specified by:
      newTypeHierarchy in interface IType
      Parameters:
      monitor - the given progress monitor
      Returns:
      a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the workspace
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType
    • newTypeHierarchy

      public ITypeHierarchy newTypeHierarchy(ICompilationUnit[] workingCopies, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the workspace, considering types in the given working copies. In other words, the list of working copies that will take precedence over their original compilation units in the workspace.

      Note that passing an empty working copy will be as if the original compilation unit had been deleted.

      Specified by:
      newTypeHierarchy in interface IType
      Parameters:
      workingCopies - the working copies that take precedence over their original compilation units
      monitor - the given progress monitor
      Returns:
      a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the workspace
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
    • newTypeHierarchy

      public ITypeHierarchy newTypeHierarchy(IWorkingCopy[] workingCopies, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Deprecated.
      Description copied from interface: IType
      Creates and returns a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the workspace, considering types in the given working copies. In other words, the list of working copies that will take precedence over their original compilation units in the workspace.

      Note that passing an empty working copy will be as if the original compilation unit had been deleted.

      Specified by:
      newTypeHierarchy in interface IType
      Parameters:
      workingCopies - the working copies that take precedence over their original compilation units
      monitor - the given progress monitor
      Returns:
      a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the workspace
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType.newTypeHierarchy(IWorkingCopy[], IProgressMonitor)
    • newTypeHierarchy

      public ITypeHierarchy newTypeHierarchy(WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Description copied from interface: IType
      Creates and returns a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the workspace, considering types in the working copies with the given owner. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.

      Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.

      Specified by:
      newTypeHierarchy in interface IType
      Parameters:
      owner - the owner of working copies that take precedence over their original compilation units
      monitor - the given progress monitor
      Returns:
      a type hierarchy for this type containing this type, all of its supertypes, and all its subtypes in the workspace
      Throws:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      See Also:
      IType.newTypeHierarchy(WorkingCopyOwner, IProgressMonitor)
    • resolved

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

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

      public boolean isLambda()
      Description copied from interface: IType
      Returns whether this type represents a lambda expression.
      Specified by:
      isLambda in interface IType
      Returns:
      true if this type represents a lambda expression, false otherwise