Appendable (Java SE 23 & JDK 23)
Description: declaration: module: java.base, package: java.lang, interface: Appendable
Keywords: java.lang.Appendable interface

# Interface Appendable

All Known Implementing Classes:
  `BufferedWriter`, `CharArrayWriter`, `CharBuffer`, `FileWriter`, `FilterWriter`, `LogStream`, `OutputStreamWriter`, `PipedWriter`, `PrintStream`, `PrintWriter`, `StringBuffer`, `StringBuilder`, `StringWriter`, `Writer`

public interface Appendable
An object to which `char` sequences and values can be appended. The `Appendable` interface must be implemented by any class whose instances are intended to receive formatted output from a `Formatter`.

The characters to be appended should be valid Unicode characters as described in Unicode Character Representation. Note that supplementary characters may be composed of multiple 16-bit `char` values.

Appendables are not necessarily safe for multithreaded access. Thread safety is the responsibility of classes that extend and implement this interface.

Since this interface may be implemented by existing classes with different styles of error handling there is no guarantee that errors will be propagated to the invoker.

Since:
  1.5

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Appendable`
  `append(char c)`
  Appends the specified character to this `Appendable`.
  `Appendable`
  `append(CharSequence csq)`
  Appends the specified character sequence to this `Appendable`.
  `Appendable`
  `append(CharSequence csq, int start, int end)`
  Appends a subsequence of the specified character sequence to this `Appendable`.

- ## Method Details

  - ### append

    Appendable append(CharSequence csq) throws IOException
    Appends the specified character sequence to this `Appendable`.

    Depending on which class implements the character sequence `csq`, the entire sequence may not be appended. For instance, if `csq` is a `CharBuffer` then the subsequence to append is defined by the buffer's position and limit.

    The contents of this `Appendable` are unspecified if the `CharSequence` is modified during the method call or an exception is thrown when accessing the `CharSequence`.

    Parameters:
      `csq` - The character sequence to append. If `csq` is `null`, then the four characters `"null"` are appended to this Appendable.
    Returns:
      A reference to this `Appendable`
    Throws:
      `IOException` - If an I/O error occurs

  - ### append

    Appendable append(CharSequence csq, int start, int end) throws IOException
    Appends a subsequence of the specified character sequence to this `Appendable`.

    An invocation of this method of the form `out.append(csq, start, end)` when `csq` is not `null`, behaves in exactly the same way as the invocation

             out.append(csq.subSequence(start, end))

    The contents of this `Appendable` are unspecified if the `CharSequence` is modified during the method call or an exception is thrown when accessing the `CharSequence`.

    Parameters:
      `csq` - The character sequence from which a subsequence will be appended. If `csq` is `null`, then characters will be appended as if `csq` contained the four characters `"null"`.
      `start` - The index of the first character in the subsequence
      `end` - The index of the character following the last character in the subsequence
    Returns:
      A reference to this `Appendable`
    Throws:
      `IndexOutOfBoundsException` - If `start` or `end` are negative, `start` is greater than `end`, or `end` is greater than `csq.length()`
      `IOException` - If an I/O error occurs

  - ### append

    Appendable append(char c) throws IOException
    Appends the specified character to this `Appendable`.
    Parameters:
      `c` - The character to append
    Returns:
      A reference to this `Appendable`
    Throws:
      `IOException` - If an I/O error occurs