模块  jdk.dynalink
软件包  jdk.dynalink

Class 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”类似于“address”,并包含文本名称,数字索引或链接器可以进行的任何其他类型的寻址了解)。 在这些情况下,操作的调用站点的预期签名将更改为不再包含name参数。 具体而言,所有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 - 如果名称为null。
      • equals

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

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

        public static Operation getBaseOperation​(Operation op)
        如果传递的操作是命名操作,则返回其 getBaseOperation() ,否则返回操作。
        参数
        op - 操作
        结果
        传递操作的基本操作。
      • getName

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