# Interface Operation

All Known Implementing Classes:
  `NamedOperation, NamespaceOperation, StandardOperation`

public interface Operation
An object that describes a dynamic operation. Dynalink defines a set of standard operations with the `StandardOperation` class, as well as a way to express the target `namespace(s)` of an operation on an object using `NamespaceOperation` and finally a way to attach a fixed target name to an operation using `NamedOperation`. When presenting examples in this documentation, we will refer to standard operations using their name (e.g. `GET`), to namespace operations by separating their base operation with a colon from their namespace (e.g. `GET:PROPERTY`), or in case of multiple namespaces we will further separate those with the vertical line character (e.g. `GET:PROPERTY|ELEMENT`), and finally we will refer to named operations by separating the base operation and the name with the colon character (e.g. `GET:PROPERTY|ELEMENT:color`).

Since:
  9

## Method Summary

Modifier and Type
Method
Description
`default NamedOperation`
`named(Object name)`
Returns a `NamedOperation` using this operation as its base.
`default NamespaceOperation`
`withNamespace(Namespace namespace)`
Returns a `NamespaceOperation` using this operation as its base.
`default NamespaceOperation`
`withNamespaces(Namespace... namespaces)`
Returns a `NamespaceOperation` using this operation as its base.

## Method Details

### withNamespace

default NamespaceOperation withNamespace(Namespace namespace)
Returns a `NamespaceOperation` using this operation as its base.

Parameters:
  `namespace` - the namespace that is the target of the namespace operation.
Returns:
  a `NamespaceOperation` with this operation as its base and the specified namespace as its target.
Throws:
  `IllegalArgumentException` - if this operation is already a namespace operation or a named operation.
  `NullPointerException` - if `namespace` is null.

### withNamespaces

default NamespaceOperation withNamespaces(Namespace... namespaces)
Returns a `NamespaceOperation` using this operation as its base.

Parameters:
  `namespaces` - the namespaces that are the target of the namespace operation.
Returns:
  a `NamespaceOperation` with this operation as its base and the specified namespaces as its targets.
Throws:
  `IllegalArgumentException` - if this operation is already a namespace operation or a named operation.
  `NullPointerException` - if `namespace` or any of its elements is null.

### named

default NamedOperation named(Object name)
Returns a `NamedOperation` using this operation as its base.

Parameters:
  `name` - the name that is the target of the named operation.
Returns:
  a `NamedOperation` with this operation as its base and the specified name.
Throws:
  `IllegalArgumentException` - if this operation is already a named operation.
  `NullPointerException` - if `name` is null.