模块 jdk.dynalink

类 NamedOperation

java.lang.Object
jdk.dynalink.NamedOperation
所有已实现的接口:
Operation

public final class NamedOperation extends Object implements Operation
将一个名称与另一个操作相关联的操作。通常与通常采用名称或索引以将它们绑定到固定名称的操作一起使用。例如,
   new NamedOperation(
     new NamespaceOperation(
       StandardOperation.GET,
       StandardNamespace.PROPERTY),
     "color")
 
将是一个命名操作,用于在它所应用的对象上获取名为“color”的属性,而
   new NamedOperation(
     new NamespaceOperation(
       StandardOperation.GET,
       StandardNamespace.ELEMENT),
     3)
 
将是一个命名操作,用于从它所应用的集合中获取索引 3 处的元素(在此为“name”) context 类似于“地址”,包括文本名称、数字索引或链接器可以理解的任何其他类型的寻址)。在这些情况下,操作调用站点的预期签名将更改为不再包含名称参数。具体来说,所有 StandardOperation 成员的文档描述了它们如何因被并入命名操作而受到影响。

虽然 NamedOperation 可以直接构造,但使用 Operation.named(Object) 工厂方法通常更方便,例如:

  StandardOperation.GET
    .withNamespace(StandardNamespace.ELEMENT),
    .named(3)
   )
 

尽管 NamedOperation 最常以 NamespaceOperation 作为其基础,但它也可以将其他操作作为其基础(另一个命名操作除外)。具体来说,StandardOperation.CALL StandardOperation.NEW 都可以直接与 NamedOperation 一起使用。这些操作的契约是这样的,当它们用作命名操作时,它们的名称仅用于诊断消息,通常包含检索被调用者的源表达式的文本表示,例如 StandardOperation.CALL.named("window.open")

  • 构造方法详细信息

    • NamedOperation

      public NamedOperation(Operation  baseOperation, Object  name)
      创建一个新的命名操作。
      参数:
      baseOperation - 与名称关联的基本操作。
      name - 与基本操作关联的名称。请注意,名称不一定是字符串,可以是任意对象。由于该名称用于寻址,因此当用作数组或列表等的索引时,它可以是 Integer
      抛出:
      NullPointerException - 如果 baseOperationname 为空。
      IllegalArgumentException - 如果 baseOperation 本身就是一个 NamedOperation
  • 方法详情

    • getBaseOperation

      public Operation  getBaseOperation()
      返回此命名操作的基本操作。
      返回:
      此命名操作的基本操作。
    • getName

      public Object  getName()
      返回此命名操作的名称。
      返回:
      此命名操作的名称。
    • changeName

      public final NamedOperation  changeName(String  newName)
      查找或创建仅在名称上与此操作不同的命名操作。
      参数:
      newName - 用于替换旧名称的新名称。
      返回:
      具有更改名称的命名操作。
      抛出:
      NullPointerException - 如果名称为空。
    • equals

      public boolean equals(Object  obj)
      将此命名操作与另一个对象进行比较。如果另一个对象也是命名操作,并且它们的基本操作和名称相等,则返回 true。
      重写:
      equals 在类 Object
      参数:
      obj - 要比较的参考对象。
      返回:
      true 如果此对象与 obj 参数相同; false否则。
      参见:
    • hashCode

      public int hashCode()
      返回此命名操作的哈希码。它被定义为等于 baseOperation.hashCode() + 31 * name.hashCode()
      重写:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      参见:
    • toString

      public String  toString()
      返回此命名操作的字符串表示形式。它被定义为等于 baseOperation.toString() + ":" + name.toString()
      重写:
      toString 在类 Object
      返回:
      对象的字符串表示形式。
    • getBaseOperation

      public static Operation  getBaseOperation(Operation  op)
      如果传递的操作是命名操作,则返回其 getBaseOperation() ,否则按原样返回操作。
      参数:
      op - 操作
      返回:
      传递操作的基础操作。
    • getName

      public static Object  getName(Operation  op)
      如果传递的操作是命名操作,则返回其 getName() ,否则返回 null。请注意,命名操作对象永远不能有空名称,因此返回 null 表示传递的操作实际上不是命名操作。
      参数:
      op - 操作
      返回:
      传递的操作中的名称,如果它不是命名操作,则为 null。