Diagnostic (Java Platform SE 8 )
Keywords: javax.tools.Diagnostic interface
Date: 2026-03-16

compact3
javax.tools

## Interface Diagnostic<S>

- Type Parameters:
    `S` - the type of source object used by this diagnostic

      public interface Diagnostic<S>

  Interface for diagnostics from tools. A diagnostic usually reports a problem at a specific position in a source file. However, not all diagnostics are associated with a position or a file.

  A position is a zero-based character offset from the beginning of a file. Negative values (except `NOPOS`) are not valid positions.

  Line and column numbers begin at 1. Negative values (except `NOPOS`) and 0 are not valid line or column numbers.

  Since:
    1.6

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `Diagnostic.Kind` Kinds of diagnostics, for example, error or warning.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static long` | `NOPOS` Used to signal that no position is available.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `getCode()` Gets a diagnostic code indicating the type of diagnostic.
    `long` | `getColumnNumber()` Gets the column number of the character offset returned by getPosition().
    `long` | `getEndPosition()` Gets the character offset from the beginning of the file associated with this diagnostic that indicates the end of the problem.
    `Diagnostic.Kind` | `getKind()` Gets the kind of this diagnostic, for example, error or warning.
    `long` | `getLineNumber()` Gets the line number of the character offset returned by getPosition().
    `String` | `getMessage(Locale locale)` Gets a localized message for the given locale.
    `long` | `getPosition()` Gets a character offset from the beginning of the source object associated with this diagnostic that indicates the location of the problem.
    `S` | `getSource()` Gets the source object associated with this diagnostic.
    `long` | `getStartPosition()` Gets the character offset from the beginning of the file associated with this diagnostic that indicates the start of the problem.

- - ### Field Detail

    - #### NOPOS

          static final long NOPOS

      Used to signal that no position is available.
      See Also:
        Constant Field Values

  - ### Method Detail

    - #### getKind

          Diagnostic.Kind getKind()

      Gets the kind of this diagnostic, for example, error or warning.
      Returns:
        the kind of this diagnostic

    - #### getSource

          S getSource()

      Gets the source object associated with this diagnostic.
      Returns:
        the source object associated with this diagnostic. `null` if no source object is associated with the diagnostic.

    - #### getPosition

          long getPosition()

      Gets a character offset from the beginning of the source object associated with this diagnostic that indicates the location of the problem. In addition, the following must be true:

      `getStartPostion() <= getPosition()`

      `getPosition() <= getEndPosition()`

      Returns:
        character offset from beginning of source; `NOPOS` if `getSource()` would return `null` or if no location is suitable

    - #### getStartPosition

          long getStartPosition()

      Gets the character offset from the beginning of the file associated with this diagnostic that indicates the start of the problem.
      Returns:
        offset from beginning of file; `NOPOS` if and only if `getPosition()` returns `NOPOS`

    - #### getEndPosition

          long getEndPosition()

      Gets the character offset from the beginning of the file associated with this diagnostic that indicates the end of the problem.
      Returns:
        offset from beginning of file; `NOPOS` if and only if `getPosition()` returns `NOPOS`

    - #### getLineNumber

          long getLineNumber()

      Gets the line number of the character offset returned by getPosition().
      Returns:
        a line number or `NOPOS` if and only if `getPosition()` returns `NOPOS`

    - #### getColumnNumber

          long getColumnNumber()

      Gets the column number of the character offset returned by getPosition().
      Returns:
        a column number or `NOPOS` if and only if `getPosition()` returns `NOPOS`

    - #### getCode

          String getCode()

      Gets a diagnostic code indicating the type of diagnostic. The code is implementation-dependent and might be `null`.
      Returns:
        a diagnostic code

    - #### getMessage

          String getMessage(Locale locale)

      Gets a localized message for the given locale. The actual message is implementation-dependent. If the locale is `null` use the default locale.
      Parameters:
        `locale` - a locale; might be `null`
      Returns:
        a localized message

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.