Class NamedOperation
java.lang.Object
jdk.dynalink.NamedOperation
- All Implemented Interfaces:
Operation
Operation that associates a name with another operation. Typically used with
operations that normally take a name or an index to bind them to a fixed
name. E.g.
new NamedOperation( new NamespaceOperation( StandardOperation.GET, StandardNamespace.PROPERTY), "color")will be a named operation for getting the property named "color" on the object it is applied to, and
new NamedOperation( new NamespaceOperation( StandardOperation.GET, StandardNamespace.ELEMENT), 3)will be a named operation for getting the element at index 3 from the collection it is applied to ("name" in this context is akin to "address" and encompasses both textual names, numeric indices, or any other kinds of addressing that linkers can understand). In these cases, the expected signature of the call site for the operation will change to no longer include the name parameter. Specifically, the documentation for all
StandardOperation
members describes how
they are affected by being incorporated into a named operation.
While NamedOperation
can be constructed directly, it is often convenient
to use the Operation.named(Object)
factory method instead, e.g.:
StandardOperation.GET .withNamespace(StandardNamespace.ELEMENT), .named(3) )
Even though NamedOperation
is most often used with NamespaceOperation
as
its base, it can have other operations as its base too (except another named operation).
Specifically, StandardOperation.CALL
as well as StandardOperation.NEW
can
both be used with NamedOperation
directly. The contract for these operations is such
that when they are used as named operations, their name is only used for diagnostic messages,
usually containing the textual representation of the source expression that retrieved the
callee, e.g. StandardOperation.CALL.named("window.open")
.
- Since:
- 9
-
Constructor Summary
ConstructorsConstructorDescriptionNamedOperation
(Operation baseOperation, Object name) Creates a new named operation. -
Method Summary
Modifier and TypeMethodDescriptionfinal NamedOperation
changeName
(String newName) Finds or creates a named operation that differs from this one only in the name.boolean
Compares this named operation to another object.Returns the base operation of this named operation.static Operation
If the passed operation is a named operation, returns itsgetBaseOperation()
, otherwise returns the operation as is.getName()
Returns the name of this named operation.static Object
If the passed operation is a named operation, returns itsgetName()
, otherwise returns null.int
hashCode()
Returns the hash code of this named operation.toString()
Returns the string representation of this named operation.Methods declared in class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Modifier and TypeMethodDescriptionprotected Object
clone()
Creates and returns a copy of this object.protected void
finalize()
Deprecated, for removal: This API element is subject to removal in a future version.Finalization is deprecated and subject to removal in a future release.final Class
<?> getClass()
Returns the runtime class of thisObject
.final void
notify()
Wakes up a single thread that is waiting on this object's monitor.final void
Wakes up all threads that are waiting on this object's monitor.final void
wait()
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.final void
wait
(long timeoutMillis) Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.final void
wait
(long timeoutMillis, int nanos) Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.Methods declared in interface Operation
named, withNamespace, withNamespaces
Modifier and TypeMethodDescriptiondefault NamedOperation
Returns aNamedOperation
using this operation as its base.default NamespaceOperation
withNamespace
(Namespace namespace) Returns aNamespaceOperation
using this operation as its base.default NamespaceOperation
withNamespaces
(Namespace... namespaces) Returns aNamespaceOperation
using this operation as its base.
-
Constructor Details
-
NamedOperation
Creates a new named operation.- Parameters:
baseOperation
- the base operation that is associated with a name.name
- the name associated with the base operation. Note that the name is not necessarily a string, but can be an arbitrary object. As the name is used for addressing, it can be anInteger
when meant to be used as an index into an array or list etc.- Throws:
NullPointerException
- if eitherbaseOperation
orname
is null.IllegalArgumentException
- ifbaseOperation
is itself aNamedOperation
.
-
-
Method Details
-
getBaseOperation
Returns the base operation of this named operation.- Returns:
- the base operation of this named operation.
-
getName
Returns the name of this named operation.- Returns:
- the name of this named operation.
-
changeName
Finds or creates a named operation that differs from this one only in the name.- Parameters:
newName
- the new name to replace the old name with.- Returns:
- a named operation with the changed name.
- Throws:
NullPointerException
- if the name is null.
-
equals
Compares this named operation to another object. Returns true if the other object is also a named operation, and both their base operations and name are equal. -
hashCode
-
toString
-
getBaseOperation
If the passed operation is a named operation, returns itsgetBaseOperation()
, otherwise returns the operation as is.- Parameters:
op
- the operation- Returns:
- the base operation of the passed operation.
-
getName
If the passed operation is a named operation, returns itsgetName()
, otherwise returns null. Note that a named operation object can never have a null name, therefore returning null is indicative that the passed operation is not, in fact, a named operation.- Parameters:
op
- the operation- Returns:
- the name in the passed operation, or null if it is not a named operation.
-