Module java.compiler
Package 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
`static class` `Diagnostic.Kind` Kinds of diagnostics, for example, error or warning.

### Field Summary

Fields
`static long` `NOPOS` Used to signal that no position is available.

### Method Summary

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

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

Returns:
  the kind of this diagnostic

#### getSource

    S getSource()

Returns 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()

Returns 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()

Returns 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()

Returns 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()

Returns 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()

Returns 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()

Returns 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)

Returns 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