# Watchable

public interface **Watchable**

|---|---|---|
| Known Indirect Subclasses [Path](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/Path.html) |---|---| | [Path](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/Path.html) | An object that may be used to locate a file in a file system. | |||

An object that may be registered with a watch service so that it can be
*watched* for changes and events.

This interface defines the `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/Watchable.html#register(java.nio.file.WatchService,%20java.nio.file.WatchEvent.Kind<?>...)` method to register
the object with a `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchService.html` returning a `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchKey.html` to
represent the registration. An object may be registered with more than one
watch service. Registration with a watch service is cancelled by invoking the
key's `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchKey.html#cancel()` method.

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/Path.html#register(java.nio.file.WatchService,%20java.nio.file.WatchEvent.Kind<?>...)`

### Public Method Summary

|---|---|
| abstract [WatchKey](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchKey.html) | [register](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/Watchable.html#register(java.nio.file.WatchService,%20java.nio.file.WatchEvent.Kind<?>[],%20java.nio.file.WatchEvent.Modifier...))([WatchService](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchService.html) watcher, [Kind\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchEvent.Kind.html)\<?\> events, [Modifier...](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchEvent.Modifier.html) modifiers) Registers an object with a watch service. |
| abstract [WatchKey](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchKey.html) | [register](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/Watchable.html#register(java.nio.file.WatchService,%20java.nio.file.WatchEvent.Kind<?>...))([WatchService](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchService.html) watcher, [Kind...](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchEvent.Kind.html)\<?\> events) Registers an object with a watch service. |

## Public Methods

#### public abstract [WatchKey](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchKey.html)
**register**
([WatchService](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchService.html) watcher, [Kind\[\]](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchEvent.Kind.html)\<?\> events, [Modifier...](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchEvent.Modifier.html) modifiers)

Registers an object with a watch service.

If the file system object identified by this object is currently
registered with the watch service then the watch key, representing that
registration, is returned after changing the event set or modifiers to
those specified by the `events` and `modifiers` parameters.
Changing the event set does not cause pending events for the object to be
discarded. Objects are automatically registered for the `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/StandardWatchEventKinds.html#OVERFLOW` event. This event is not
required to be present in the array of events.

Otherwise the file system object has not yet been registered with the
given watch service, so it is registered and the resulting new key is
returned.

Implementations of this interface should specify the events they
support.

##### Parameters

| watcher | the watch service to which this object is to be registered |
| events | the events for which this object should be registered |
| modifiers | the modifiers, if any, that modify how the object is registered |
|---|---|

##### Returns

- a key representing the registration of this object with the given watch service

##### Throws

| [UnsupportedOperationException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/UnsupportedOperationException.html) | if unsupported events or modifiers are specified |
| [IllegalArgumentException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/IllegalArgumentException.html) | if an invalid of combination of events are modifiers are specified |
| [ClosedWatchServiceException](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/ClosedWatchServiceException.html) | if the watch service is closed |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs |
| [SecurityException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/SecurityException.html) | if a security manager is installed and it denies an unspecified permission required to monitor this object. Implementations of this interface should specify the permission checks. |
|---|---|

#### public abstract [WatchKey](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchKey.html)
**register**
([WatchService](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchService.html) watcher, [Kind...](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/WatchEvent.Kind.html)\<?\> events)

Registers an object with a watch service.

An invocation of this method behaves in exactly the same way as the
invocation

         watchable.https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/Watchable.html#register(java.nio.file.WatchService,%20java.nio.file.WatchEvent.Kind<?>[],%20java.nio.file.WatchEvent.Modifier...)(watcher, events, new WatchEvent.Modifier[0]);
     
<br />

##### Parameters

| watcher | the watch service to which this object is to be registered |
| events | the events for which this object should be registered |
|---|---|

##### Returns

- a key representing the registration of this object with the given watch service

##### Throws

| [UnsupportedOperationException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/UnsupportedOperationException.html) | if unsupported events are specified |
| [IllegalArgumentException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/IllegalArgumentException.html) | if an invalid of combination of events are specified |
| [ClosedWatchServiceException](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/file/ClosedWatchServiceException.html) | if the watch service is closed |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs |
| [SecurityException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/SecurityException.html) | if a security manager is installed and it denies an unspecified permission required to monitor this object. Implementations of this interface should specify the permission checks. |
|---|---|