# Class ForwardingJavaFileObject<F extends JavaFileObject>

java.lang.Object
javax.tools.ForwardingFileObject<F>
javax.tools.ForwardingJavaFileObject<F>

Type Parameters:
  `F` - the kind of file object forwarded to by this object

All Implemented Interfaces:
  `FileObject, JavaFileObject`

public class ForwardingJavaFileObject<F extends JavaFileObject> extends ForwardingFileObject<F> implements JavaFileObject
Forwards calls to a given file object. Subclasses of this class might override some of these methods and might also provide additional fields and methods.

Unless stated otherwise, references in this class to "this file object" should be interpreted as referring indirectly to the delegate file object.

Since:
  1.6

- ## Nested Class Summary

  ### Nested classes/interfaces declared in interface JavaFileObject

  `JavaFileObject.Kind`
  Modifier and Type
  Interface
  Description
  `static enum`
  `JavaFileObject.Kind`
  Kinds of JavaFileObjects.

- ## Field Summary

  ### Fields declared in class ForwardingFileObject

  `fileObject`
  Modifier and Type
  Field
  Description
  `protected final F`
  `fileObject`
  The file object to which all methods are delegated.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `ForwardingJavaFileObject(F fileObject)`
  Creates a new instance of `ForwardingJavaFileObject`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Modifier`
  `getAccessLevel()`
  Provides a hint about the access level of the class represented by this file object.
  `JavaFileObject.Kind`
  `getKind()`
  Returns the kind of this file object.
  `NestingKind`
  `getNestingKind()`
  Provides a hint about the nesting level of the class represented by this file object.
  `boolean`
  `isNameCompatible(String simpleName, JavaFileObject.Kind kind)`
  Checks if this file object is compatible with the specified simple name and kind.

  ### Methods declared in class ForwardingFileObject

  `delete, getCharContent, getLastModified, getName, openInputStream, openOutputStream, openReader, openWriter, toUri`
  Modifier and Type
  Method
  Description
  `boolean`
  `delete()`
  Deletes this file object.
  `CharSequence`
  `getCharContent(boolean ignoreEncodingErrors)`
  Returns the character content of this file object, if available.
  `long`
  `getLastModified()`
  Returns the time this file object was last modified.
  `String`
  `getName()`
  Returns a user-friendly name for this file object.
  `InputStream`
  `openInputStream()`
  Returns an InputStream for this file object.
  `OutputStream`
  `openOutputStream()`
  Returns an OutputStream for this file object.
  `Reader`
  `openReader(boolean ignoreEncodingErrors)`
  Returns a reader for this object.
  `Writer`
  `openWriter()`
  Returns a Writer for this file object.
  `URI`
  `toUri()`
  Returns a URI identifying this file object.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### ForwardingJavaFileObject

    protected ForwardingJavaFileObject(F fileObject)
    Creates a new instance of `ForwardingJavaFileObject`.
    Parameters:
      `fileObject` - delegate to this file object

- ## Method Details

  - ### getKind

    public JavaFileObject.Kind getKind()
    Description copied from interface: `JavaFileObject`
    Returns the kind of this file object.
    Specified by:
      `getKind` in interface `JavaFileObject`
    Returns:
      the kind

  - ### isNameCompatible

    public boolean isNameCompatible(String simpleName, JavaFileObject.Kind kind)
    Description copied from interface: `JavaFileObject`
    Checks if this file object is compatible with the specified simple name and kind. A simple name is a single identifier (not qualified) as defined in The Java Language Specification, section 6.2.
    Specified by:
      `isNameCompatible` in interface `JavaFileObject`
    Parameters:
      `simpleName` - a simple name of a class
      `kind` - a kind
    Returns:
      `true` if this file object is compatible; `false` otherwise

  - ### getNestingKind

    public NestingKind getNestingKind()
    Description copied from interface: `JavaFileObject`
    Provides a hint about the nesting level of the class represented by this file object. This method may return `NestingKind.MEMBER` to mean `NestingKind.LOCAL` or `NestingKind.ANONYMOUS`. If the nesting level is not known or this file object does not represent a class file this method returns `null`.
    Specified by:
      `getNestingKind` in interface `JavaFileObject`
    Returns:
      the nesting kind, or `null` if the nesting kind is not known

  - ### getAccessLevel

    public Modifier getAccessLevel()
    Description copied from interface: `JavaFileObject`
    Provides a hint about the access level of the class represented by this file object. If the access level is not known or this file object does not represent a class file this method returns `null`.
    Specified by:
      `getAccessLevel` in interface `JavaFileObject`
    Returns:
      the access level