JavaFileObject (Java SE 26 & JDK 26)
Description: declaration: module: java.compiler, package: javax.tools, interface: JavaFileObject
Keywords: javax.tools.JavaFileObject interface

# Interface JavaFileObject

All Superinterfaces:
  `FileObject`

All Known Implementing Classes:
  `ForwardingJavaFileObject, SimpleJavaFileObject`

public interface JavaFileObject extends FileObject
File abstraction for tools operating on Java programming language source and class files.

Unless explicitly allowed, all methods in this interface might throw a NullPointerException if given a `null` argument.

Since:
  1.6
See Also:
  - `JavaFileManager`

- ## Nested Class Summary

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

- ## 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 interface FileObject

  `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.

- ## Method Details

  - ### getKind

    JavaFileObject.Kind getKind()
    Returns the kind of this file object.
    Returns:
      the kind

  - ### isNameCompatible

    boolean isNameCompatible(String simpleName, JavaFileObject.Kind kind)
    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.
    Parameters:
      `simpleName` - a simple name of a class
      `kind` - a kind
    Returns:
      `true` if this file object is compatible; `false` otherwise

  - ### getNestingKind

    NestingKind getNestingKind()
    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`.
    Returns:
      the nesting kind, or `null` if the nesting kind is not known

  - ### getAccessLevel

    Modifier getAccessLevel()
    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`.
    Returns:
      the access level