Klasse AbstractClassFile

java.lang.Object
org.eclipse.core.runtime.PlatformObject
Alle implementierten Schnittstellen:
IBufferChangedListener, IClassFile, ICodeAssist, IJavaElement, IOpenable, IParent, ISourceReference, ITypeRoot, SuffixConstants, org.eclipse.core.runtime.IAdaptable
Bekannte direkte Unterklassen:
ClassFile, ModularClassFile

public abstract class AbstractClassFile extends Openable implements IClassFile, SuffixConstants
Common parts of ClassFile (containing a BinaryType) and ModularClassFile (containing a BinaryModule). Prior to Java 9, most of this content was directly in ClassFile.
  • Felddetails

    • name

      protected String name
  • Konstruktordetails

  • Methodendetails

    • becomeWorkingCopy

      public ICompilationUnit becomeWorkingCopy(IProblemRequestor problemRequestor, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Beschreibung aus Schnittstelle kopiert: IClassFile
      Changes this class file handle into a working copy. A new IBuffer is created using the given owner. Uses the primary owner if null is specified.

      When switching to working copy mode, problems are reported to the given IProblemRequestor. Note that once in working copy mode, the given IProblemRequestor is ignored. Only the original IProblemRequestor is used to report subsequent problems.

      Once in working copy mode, changes to this working copy or its children are done in memory. Only the new buffer is affected.

      Using ICompilationUnit.commitWorkingCopy(boolean, IProgressMonitor) on the working copy will throw a JavaModelException as a class file is implicetly read-only.

      If this class file was already in working copy mode, an internal counter is incremented and no other action is taken on this working copy. To bring this working copy back into the original mode (where it reflects the underlying resource), ICompilationUnit.discardWorkingCopy() must be call as many times as IClassFile.becomeWorkingCopy(IProblemRequestor, WorkingCopyOwner, IProgressMonitor).

      The primary compilation unit of a class file's working copy does not exist if the class file is not in working copy mode (classFileWorkingCopy.getPrimary().exists() == false).

      The resource of a class file's working copy is null if the class file is in an external jar file.

      Angegeben von:
      becomeWorkingCopy in Schnittstelle IClassFile
      Parameter:
      problemRequestor - a requestor which will get notified of problems detected during reconciling as they are discovered. The requestor can be set to null indicating that the client is not interested in problems.
      owner - the given WorkingCopyOwner, or null for the primary owner
      monitor - a progress monitor used to report progress while opening this compilation unit or null if no progress should be reported
      Gibt zurück:
      a working copy for this class file
      Löst aus:
      JavaModelException - if this compilation unit could not become a working copy.
      Siehe auch:
    • codeComplete

      @Deprecated public void codeComplete(int offset, ICompletionRequestor requestor) throws JavaModelException
      Veraltet.
      Beschreibung aus Schnittstelle kopiert: ICodeAssist
      Performs code completion at the given offset position in this compilation unit, reporting results to the given completion requestor. The offset is the 0-based index of the character, after which code assist is desired. An offset of -1 indicates to code assist at the beginning of this compilation unit.
      Angegeben von:
      codeComplete in Schnittstelle ICodeAssist
      Parameter:
      offset - the given offset position
      requestor - the given completion requestor
      Löst aus:
      JavaModelException - if code assist could not be performed. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • The position specified is Ungültige Eingabe: "<" -1 or is greater than this compilation unit's source length (INDEX_OUT_OF_BOUNDS)
      Siehe auch:
    • codeComplete

      @Deprecated public void codeComplete(int offset, ICompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException
      Veraltet.
      Beschreibung aus Schnittstelle kopiert: ICodeAssist
      Performs code completion at the given offset position in this compilation unit, reporting results to the given completion requestor. The offset is the 0-based index of the character, after which code assist is desired. An offset of -1 indicates to code assist at the beginning of this compilation unit. 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.

      Angegeben von:
      codeComplete in Schnittstelle ICodeAssist
      Parameter:
      offset - the given offset position
      requestor - the given completion requestor
      owner - the owner of working copies that take precedence over their original compilation units
      Löst aus:
      JavaModelException - if code assist could not be performed. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • The position specified is Ungültige Eingabe: "<" -1 or is greater than this compilation unit's source length (INDEX_OUT_OF_BOUNDS)
      Siehe auch:
    • codeComplete

      public void codeComplete(int offset, CompletionRequestor requestor) throws JavaModelException
      Beschreibung aus Schnittstelle kopiert: ICodeAssist
      Performs code completion at the given offset position in this compilation unit, reporting results to the given completion requestor. The offset is the 0-based index of the character, after which code assist is desired. An offset of -1 indicates to code assist at the beginning of this compilation unit.
      Angegeben von:
      codeComplete in Schnittstelle ICodeAssist
      Parameter:
      offset - the given offset position
      requestor - the given completion requestor
      Löst aus:
      JavaModelException - if code assist could not be performed. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • The position specified is Ungültige Eingabe: "<" -1 or is greater than this compilation unit's source length (INDEX_OUT_OF_BOUNDS)
    • codeComplete

      public void codeComplete(int offset, CompletionRequestor requestor, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Beschreibung aus Schnittstelle kopiert: ICodeAssist
      Performs code completion at the given offset position in this compilation unit, reporting results to the given completion requestor. The offset is the 0-based index of the character, after which code assist is desired. An offset of -1 indicates to code assist at the beginning of this compilation unit.

      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 Ungültige Eingabe: "<"= System.currentTimeMillis();
           }
           ...
       };
       
      Angegeben von:
      codeComplete in Schnittstelle ICodeAssist
      Parameter:
      offset - the given offset position
      requestor - the given completion requestor
      monitor - the progress monitor used to report progress
      Löst aus:
      JavaModelException - if code assist could not be performed. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • The position specified is Ungültige Eingabe: "<" -1 or is greater than this compilation unit's source length (INDEX_OUT_OF_BOUNDS)
    • codeComplete

      public void codeComplete(int offset, CompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException
      Beschreibung aus Schnittstelle kopiert: ICodeAssist
      Performs code completion at the given offset position in this compilation unit, reporting results to the given completion requestor. The offset is the 0-based index of the character, after which code assist is desired. An offset of -1 indicates to code assist at the beginning of this compilation unit. 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.

      Angegeben von:
      codeComplete in Schnittstelle ICodeAssist
      Parameter:
      offset - the given offset position
      requestor - the given completion requestor
      owner - the owner of working copies that take precedence over their original compilation units
      Löst aus:
      JavaModelException - if code assist could not be performed. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • The position specified is Ungültige Eingabe: "<" -1 or is greater than this compilation unit's source length (INDEX_OUT_OF_BOUNDS)
    • codeComplete

      public abstract void codeComplete(int offset, CompletionRequestor requestor, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException
      Beschreibung aus Schnittstelle kopiert: ICodeAssist
      Performs code completion at the given offset position in this compilation unit, reporting results to the given completion requestor. The offset is the 0-based index of the character, after which code assist is desired. An offset of -1 indicates to code assist at the beginning of this compilation unit. 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 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 Ungültige Eingabe: "<"= System.currentTimeMillis();
           }
           ...
       };
       
      Angegeben von:
      codeComplete in Schnittstelle ICodeAssist
      Parameter:
      offset - the given offset position
      requestor - the given completion requestor
      owner - the owner of working copies that take precedence over their original compilation units
      monitor - the progress monitor used to report progress
      Löst aus:
      JavaModelException - if code assist could not be performed. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • The position specified is Ungültige Eingabe: "<" -1 or is greater than this compilation unit's source length (INDEX_OUT_OF_BOUNDS)
    • codeSelect

      public IJavaElement[] codeSelect(int offset, int length) throws JavaModelException
      Beschreibung aus Schnittstelle kopiert: ICodeAssist
      Returns the Java elements corresponding to the given selected text in this compilation unit. The offset is the 0-based index of the first selected character. The length is the number of selected characters.

      Note that if the length is 0 and the offset is inside an identifier or the index just after an identifier then this identifier is considered as the selection.

      Angegeben von:
      codeSelect in Schnittstelle ICodeAssist
      Parameter:
      offset - the given offset position
      length - the number of selected characters
      Gibt zurück:
      the Java elements corresponding to the given selected text
      Löst aus:
      JavaModelException - if code resolve could not be performed. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • The range specified is not within this element's source range (INDEX_OUT_OF_BOUNDS)
      Siehe auch:
    • codeSelect

      public abstract IJavaElement[] codeSelect(int offset, int length, WorkingCopyOwner owner) throws JavaModelException
      Beschreibung aus Schnittstelle kopiert: ICodeAssist
      Returns the Java elements corresponding to the given selected text in this compilation unit. The offset is the 0-based index of the first selected character. The length is the number of selected characters. 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 the length is 0 and the offset is inside an identifier or the index just after an identifier then this identifier is considered as the selection.

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

      Angegeben von:
      codeSelect in Schnittstelle ICodeAssist
      Parameter:
      offset - the given offset position
      length - the number of selected characters
      owner - the owner of working copies that take precedence over their original compilation units
      Gibt zurück:
      the Java elements corresponding to the given selected text
      Löst aus:
      JavaModelException - if code resolve could not be performed. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • The range specified is not within this element's source range (INDEX_OUT_OF_BOUNDS)
    • createElementInfo

      protected Object createElementInfo()
      Returns a new element info for this element.
      Setzt außer Kraft:
      createElementInfo in Klasse Openable
    • equals

      public boolean equals(Object o)
      Beschreibung aus Klasse kopiert: 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.

      Setzt außer Kraft:
      equals in Klasse JavaElement
      Siehe auch:
    • findElement

      protected IJavaElement findElement(IJavaElement elt, int position, SourceMapper mapper)
      Finds the deepest IJavaElement in the hierarchy of elt's children (including elt itself) which has a source range that encloses position according to mapper.
    • getPathIdentifier

      public String getPathIdentifier()
      Provide a way for clients (like debugger) to determine if two non-equal AbstractClassFile objects point to the same physical storage. The return value is constructed form the container path (if there is any) and the path of the class file itself (that could be either absolute or relative if it is inside container).
      Gibt zurück:
      some kind of unique class file identifier based on path information only. The return value may look like a path in a file system, but is not guaranteed to be a valid path that could be resolved via NIO API.
    • getBytes

      public byte[] getBytes() throws JavaModelException
      Beschreibung aus Schnittstelle kopiert: IClassFile
      Returns the bytes contained in this class file.
      Angegeben von:
      getBytes in Schnittstelle IClassFile
      Gibt zurück:
      the bytes contained in this class file
      Löst aus:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
    • getClassFileContent

      protected byte[] getClassFileContent(JarPackageFragmentRoot root, String className) throws org.eclipse.core.runtime.CoreException, IOException
      Löst aus:
      org.eclipse.core.runtime.CoreException
      IOException
    • getBuffer

      public IBuffer getBuffer() throws JavaModelException
      Beschreibung aus Klasse kopiert: Openable
      Note: a buffer with no unsaved changes can be closed by the Java Model since it has a finite number of buffers allowed open at one time. If this is the first time a request is being made for the buffer, an attempt is made to create and fill this element's buffer. If the buffer has been closed since it was first opened, the buffer is re-created.
      Angegeben von:
      getBuffer in Schnittstelle IOpenable
      Setzt außer Kraft:
      getBuffer in Klasse Openable
      Gibt zurück:
      the buffer opened for this element, or null if this element does not have a buffer
      Löst aus:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
      Siehe auch:
    • getTypeRoot

      public ITypeRoot getTypeRoot()
      Siehe auch:
    • getCorrespondingResource

      public org.eclipse.core.resources.IResource getCorrespondingResource() throws JavaModelException
      A class file has a corresponding resource unless it is contained in a jar.
      Angegeben von:
      getCorrespondingResource in Schnittstelle IJavaElement
      Setzt außer Kraft:
      getCorrespondingResource in Klasse Openable
      Gibt zurück:
      the corresponding resource, or null if none
      Löst aus:
      JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
      Siehe auch:
    • getElementAtConsideringSibling

      public IJavaElement getElementAtConsideringSibling(int position) throws JavaModelException
      Löst aus:
      JavaModelException
    • getElementName

      public String getElementName()
      Beschreibung aus Schnittstelle kopiert: IJavaElement
      Returns the name of this element. This is a handle-only method.
      Angegeben von:
      getElementName in Schnittstelle IJavaElement
      Setzt außer Kraft:
      getElementName in Klasse JavaElement
      Gibt zurück:
      the element name
      Siehe auch:
      • IAdaptable
    • getElementType

      public int getElementType()
      Beschreibung aus Schnittstelle kopiert: IJavaElement
      Returns this element's kind encoded as an integer. This is a handle-only method.
      Angegeben von:
      getElementType in Schnittstelle IJavaElement
      Gibt zurück:
      the kind of element; one of the constants declared in IJavaElement
      Siehe auch:
    • getPath

      public org.eclipse.core.runtime.IPath getPath()
      Beschreibung aus Schnittstelle kopiert: IJavaElement
      Returns the path to the innermost resource enclosing this element. If this element is not included in an external library, the path returned is the full, absolute path to the underlying resource, relative to the workbench. If this element is included in an external library, the path returned is the absolute path to the archive or to the folder in the file system. This is a handle-only method.
      Angegeben von:
      getPath in Schnittstelle IJavaElement
      Gibt zurück:
      the path to the innermost resource enclosing this element
    • resource

      public org.eclipse.core.resources.IResource resource(PackageFragmentRoot root)
      Angegeben von:
      resource in Klasse Openable
    • getSource

      public String getSource() throws JavaModelException
      Beschreibung aus Schnittstelle kopiert: ISourceReference
      Returns the source code associated with this element. This extracts the substring from the source buffer containing this source element. This corresponds to the source range that would be returned by getSourceRange.

      For class files, this returns the source of the entire compilation unit associated with the class file (if there is one).

      Angegeben von:
      getSource in Schnittstelle ISourceReference
      Gibt zurück:
      the source code, or null if this element has no associated source code
      Löst aus:
      JavaModelException - if an exception occurs while accessing its corresponding resource
      Siehe auch:
    • getSourceRange

      public ISourceRange getSourceRange() throws JavaModelException
      Beschreibung aus Schnittstelle kopiert: ISourceReference
      Returns the source range associated with this element.

      For class files, this returns the range of the entire compilation unit associated with the class file (if there is one).

      If this element has no associated source code, either null is returned, or a source range with a -1 offset and a 0 length. SourceRange.isAvailable(ISourceRange) can be used to detect that case.

      Angegeben von:
      getSourceRange in Schnittstelle ISourceReference
      Gibt zurück:
      the source range, or either null or [-1, 0] if this element has no associated source code
      Löst aus:
      JavaModelException - if an exception occurs while accessing its corresponding resource
      Siehe auch:
    • getWorkingCopy

      @Deprecated public IJavaElement getWorkingCopy(org.eclipse.core.runtime.IProgressMonitor monitor, IBufferFactory factory) throws JavaModelException
      Veraltet.
      Beschreibung aus Schnittstelle kopiert: IClassFile
      Returns a working copy on the source associated with this class file using the given factory to create the buffer, or null if there is no source associated with the class file.

      The buffer will be automatically initialized with the source of the class file upon creation.

      The only valid operations on this working copy are getBuffer() or getOriginalElement.

      Angegeben von:
      getWorkingCopy in Schnittstelle IClassFile
      Parameter:
      monitor - a progress monitor used to report progress while opening this compilation unit or null if no progress should be reported
      factory - the factory that creates a buffer that is used to get the content of the working copy or null if the internal factory should be used
      Gibt zurück:
      a a working copy on the source associated with this class file
      Löst aus:
      JavaModelException - if the source of this class file can not be determined. Reasons include:
      • This class file does not exist (ELEMENT_DOES_NOT_EXIST)
      Siehe auch:
    • hasBuffer

      protected boolean hasBuffer()
      Beschreibung aus Klasse kopiert: Openable
      Returns true if this element may have an associated source buffer, otherwise false. Subclasses must override as required.
      Setzt außer Kraft:
      hasBuffer in Klasse Openable
      Siehe auch:
    • hashCode

      public int hashCode()
      Beschreibung aus Klasse kopiert: JavaElement
      Returns the hash code for this Java element. By default, the hash code for an element is a combination of its name and parent's hash code. Elements with other requirements must override this method.
      Setzt außer Kraft:
      hashCode in Klasse JavaElement
    • isReadOnly

      public boolean isReadOnly()
      Returns true - class files are always read only.
      Angegeben von:
      isReadOnly in Schnittstelle IJavaElement
      Setzt außer Kraft:
      isReadOnly in Klasse JavaElement
      Gibt zurück:
      true if this element is read-only
      Siehe auch:
    • codeComplete

      @Deprecated public void codeComplete(int offset, ICodeCompletionRequestor requestor) throws JavaModelException
      Veraltet.
      - should use codeComplete(int, ICompletionRequestor) instead
      Beschreibung aus Schnittstelle kopiert: ICodeAssist
      Performs code completion at the given offset position in this compilation unit, reporting results to the given completion requestor. The offset is the 0-based index of the character, after which code assist is desired. An offset of -1 indicates to code assist at the beginning of this compilation unit.
      Angegeben von:
      codeComplete in Schnittstelle ICodeAssist
      Parameter:
      offset - the given offset position
      requestor - the given completion requestor
      Löst aus:
      JavaModelException - if code assist could not be performed. Reasons include:
      • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      • The position specified is Ungültige Eingabe: "<" -1 or is greater than this compilation unit's source length (INDEX_OUT_OF_BOUNDS)
      Siehe auch:
    • validateExistence

      protected org.eclipse.core.runtime.IStatus validateExistence(org.eclipse.core.resources.IResource underlyingResource)
      Angegeben von:
      validateExistence in Klasse Openable
    • getNameRange

      public ISourceRange getNameRange()
      Beschreibung aus Schnittstelle kopiert: ISourceReference
      Returns the name range associated with this element.

      If the element is an IMember, it returns the source range of this member's simple name, or null if this member does not have a name (for example, an initializer), or if this member does not have associated source code (for example, a binary type).

      If this element is an IImportDeclaration, the source range of this import declaration's name, or null if this import declaration does not have associated source code (for example, a binary type).
      The source range for the name includes the trailing '*' if the call to IImportDeclaration.isOnDemand() returns true.

      If this element is an IPackageDeclaration, the source range of this package declaration's name, or null if this package declaration does not have associated source code (for example, a binary type).

      If this element is an IAnnotation, the source range of this annotation's name, or null if this annotation does not have associated source code (for example, in a binary type).

      If this element is an ITypeParameter, the source range of this type parameter's name, or null if this type parameter does not have associated source code (for example, in a binary type).

      If this element is an ITypeRoot or IImportContainer, it returns null.

      Angegeben von:
      getNameRange in Schnittstelle ISourceReference
      Gibt zurück:
      the name range associated with this element, or null if not available