Class ReferenceMatch

java.lang.Object
org.eclipse.jdt.core.search.SearchMatch
org.eclipse.jdt.core.search.ReferenceMatch
Direct Known Subclasses:
FieldReferenceMatch, MethodReferenceMatch, ModuleReferenceMatch, PackageReferenceMatch, TypeReferenceMatch

public abstract class ReferenceMatch extends SearchMatch
An abstract Java search match that represents a reference.
Since:
3.4
  • Constructor Details

    • ReferenceMatch

      public ReferenceMatch(IJavaElement enclosingElement, int accuracy, int offset, int length, boolean insideDocComment, SearchParticipant participant, org.eclipse.core.resources.IResource resource)
      Creates a new reference match.
      Parameters:
      enclosingElement - the inner-most enclosing member that references this java element
      accuracy - one of SearchMatch.A_ACCURATE or SearchMatch.A_INACCURATE
      offset - the offset the match starts at, or -1 if unknown
      length - the length of the match, or -1 if unknown
      insideDocComment - true if this search match is inside a doc comment, and false otherwise
      participant - the search participant that created the match
      resource - the resource of the element
  • Method Details

    • getLocalElement

      public final IJavaElement getLocalElement()
      Returns the local element of this search match, or null if none. A local element is the inner-most element that contains the reference and that is not reachable by navigating from the root of the IJavaModel using IParent.getChildren().

      Known element types for local elements are IJavaElement.ANNOTATION, IJavaElement.LOCAL_VARIABLE and IJavaElement.TYPE_PARAMETER.
      However clients should not assume that this set of element types is closed as other types of elements may be returned in the future, e.g. if new types of elements are added in the Java model. Clients can only assume that the parent chain of this local element eventually leads to the element from SearchMatch.getElement().

      The local element being an IAnnotation is the most usual case. For example,

      • searching for the references to the method Annot.clazz() in
                     public class Test {
                         void method() {
                             @Annot(clazz=Test.class) int x;
                         }
                     }
        will return one MethodReferenceMatch match whose local element is the IAnnotation 'Annot'.

      • searching for the references to the type Deprecated in
                     public class Test {
                        @Deprecated void method() {}
                     }
        will return one TypeReferenceMatch match whose local element is the IAnnotation 'Deprecated'.

      • searching for the references to the field CONST in
                      @Num(number= Num.CONST)
                      @interface Num {
                          public static final int CONST= 42;
                          int number();
                      }
        will return one FieldReferenceMatch match whose local element is the IAnnotation 'Num'.

      A local element may also be a ILocalVariable whose type is the referenced type. For example,

      • searching for the references to the type Test in
                 public class Test {
                     void foo() {
                        Test local;
                     }
                 }
        will return one TypeReferenceMatch match whose local element is the ILocalVariable 'local'.

      Or a local element may be an ITypeParameter that extends the referenced type. For example,
      • searching for the references to the type Test in
                 public class X< T extends Test> {
                 }
        will return one TypeReferenceMatch match whose local element is the ITypeParameter 'T'.

      Returns:
      the local element of this search match, or null if none.
      Since:
      3.4
    • setLocalElement

      public final void setLocalElement(IJavaElement element)
      Store the local element in the match.
      Parameters:
      element - The local element to be stored
      Since:
      3.5