Module  jdk.dynalink
软件包  jdk.dynalink

Class NamedOperation

  • All Implemented Interfaces:
    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参数。 具体来说,所有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 - 与之比较的参考对象。
        结果
        如果此对象与obj参数相同, true ; 否则为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。