# Interface Appendable

All Known Implementing Classes:
  `OutputStreamWriter, StringWriter, java.io.Writer`

public interface Appendable

Declares methods to append characters or character sequences. Any class that implements this interface can receive data formatted by a `java.util.Formatter`. The appended character or character sequence should be valid according to the rules described in `Unicode Character Representation`.

`Appendable` itself does not guarantee thread safety. This responsibility is up to the implementing class.

Implementing classes can choose different exception handling mechanism. They can choose to throw exceptions other than `IOException` or they do not throw any exceptions at all and use error codes instead.

- ## Method Summary

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

- ## Method Details

  - ### append

    Appendable append(char c) throws java.io.IOException

    Appends the specified character.

    ###### Parameters

    - `c`: the character to append.

    ###### Returns

    this `Appendable`.

    ###### Throws

    - `IOException`: if an I/O error occurs.
    Throws:
      `java.io.IOException`

  - ### append

    Appendable append(CharSequence csq) throws java.io.IOException

    Appends the character sequence `csq`. Implementation classes may not append the whole sequence, for example if the target is a buffer with limited size.

    If `csq` is `null`, the characters "null" are appended.

    ###### Parameters

    - `csq`: the character sequence to append.

    ###### Returns

    this `Appendable`.

    ###### Throws

    - `IOException`: if an I/O error occurs.
    Throws:
      `java.io.IOException`

  - ### append

    Appendable append(CharSequence csq, int start, int end) throws java.io.IOException

    Appends a subsequence of `csq`.

    If `csq` is not `null` then calling this method is equivalent to calling `append(csq.subSequence(start, end))`.

    If `csq` is `null`, the characters "null" are appended.

    ###### Parameters

    - `csq`: the character sequence to append.

    - `start`: @param start the first index of the subsequence of `csq` that is appended.

    - `end`: @param end the last index of the subsequence of `csq` that is appended.

    ###### Returns

    this `Appendable`.

    ###### Throws

    - `IndexOutOfBoundsException`: @throws IndexOutOfBoundsException if `start end` or `end` is greater than the length of `csq`.

    - `IOException`: if an I/O error occurs.

    Throws:
      `java.io.IOException`