Module jdk.jshell
Package jdk.jshell

## Class SnippetEvent

- java.lang.Object
- - jdk.jshell.SnippetEvent

-     public class SnippetEvent
      extends Object

  A description of a change to a Snippet. These are generated by direct changes to state with `JShell.eval(String)` or `JShell.drop(Snippet)`, or indirectly by these same methods as dependencies change or Snippets are overwritten. For direct changes, the `causeSnippet()` is `null`.

  `SnippetEvent` is immutable: an access to any of its methods will always return the same result. and thus is thread-safe.

  Since:
    9

- - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `Snippet` | `causeSnippet()` | Either the snippet whose change caused this update or `null`.
    `JShellException` | `exception()` | An instance of `UnresolvedReferenceException`, if an unresolved reference was encountered, or an instance of `EvalException` if an exception was thrown during execution, otherwise `null`.
    `boolean` | `isSignatureChange()` | Indicates whether the signature has changed.
    `Snippet.Status` | `previousStatus()` | The status before the transition.
    `Snippet` | `snippet()` | The Snippet which has changed
    `Snippet.Status` | `status()` | The after status.
    `String` | `toString()` | Return a string representation of the event
    `String` | `value()` | The result value of successful run.

    - ### Methods declared in class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Method Detail

    - #### snippet

          public Snippet snippet()

      The Snippet which has changed
      Returns:
        the return the Snippet whose `Status` has changed.

    - #### previousStatus

          public Snippet.Status previousStatus()

      The status before the transition. If this event describes a Snippet creation return `NONEXISTENT`.
      Returns:
        the previousStatus

    - #### status

          public Snippet.Status status()

      The after status. Note: this may be the same as the previous status (not all changes cause a `Status` change.
      Returns:
        the status

    - #### isSignatureChange

          public boolean isSignatureChange()

      Indicates whether the signature has changed. Coming in or out of definition is always a signature change. An overwritten Snippet `(status == OVERWRITTEN)` is always `false` as responsibility for the definition has passed to the overwriting definition.
      Returns:
        `true` if the signature changed; otherwise `false`

    - #### causeSnippet

          public Snippet causeSnippet()

      Either the snippet whose change caused this update or `null`. This returns `null` if this change is the creation of a new Snippet via `eval` or it is the explicit drop of a Snippet with `drop`.
      Returns:
        the Snippet which caused this change or `null` if directly caused by an API action.

    - #### exception

          public JShellException exception()

      An instance of `UnresolvedReferenceException`, if an unresolved reference was encountered, or an instance of `EvalException` if an exception was thrown during execution, otherwise `null`.
      Returns:
        the exception or `null`.

    - #### value

          public String value()

      The result value of successful run. The value is null if not executed or an exception was thrown.
      Returns:
        the value or `null`.

    - #### toString

          public String toString()

      Return a string representation of the event
      Overrides:
        `toString` in class `Object`
      Returns:
        a descriptive representation of the SnippetEvent