Module  java.management
软件包  javax.management

Class ImmutableDescriptor

    • 字段详细信息

      • EMPTY_DESCRIPTOR

        public static final ImmutableDescriptor EMPTY_DESCRIPTOR
        一个空描述符。
    • 构造方法详细信息

      • ImmutableDescriptor

        public ImmutableDescriptor​(String[] fieldNames,
                                   Object[] fieldValues)
        构造一个包含给定字段和值的描述符。
        参数
        fieldNames - 字段名称
        fieldValues - 字段值
        异常
        IllegalArgumentException - 如果任一数组为空,或者数组的大小不同,或者字段名称为空或为空,或者同一个字段名称多次显示。
      • ImmutableDescriptor

        public ImmutableDescriptor​(String... fields)
        构造一个包含给定字段的描述符。 每个字符串的格式必须为fieldName=fieldValue 字段名称以=字符结尾; 例如,如果字符串为a=b=c则字段名称为a ,其值为b=c
        参数
        fields - 字段名称
        异常
        IllegalArgumentException - 如果参数为空,或者字段名称为空,或者同一个字段名称出现多次,或者其中一个字符串不包含 =字符。
      • ImmutableDescriptor

        public ImmutableDescriptor​(Map<String,?> fields)

        构造描述符,其中字段的名称和值是给定Map的键和值。

        参数
        fields - 字段名称和值
        异常
        IllegalArgumentException - 如果参数为空,或者字段名称为空或为空,或者相同的字段名称多次出现(这可能是因为字段名称不区分大小写)。
    • 方法详细信息

      • union

        public static ImmutableDescriptor union​(Descriptor... descriptors)

        返回一个ImmutableDescriptor其内容是给定描述符的并集。 任何描述符中出现的每个字段名称都将显示在结果中,该方法具有调用该方法时的值。 任何描述符的后续更改不会影响此处返回的ImmutableDescriptor。

        在最简单的情况下,只有一个描述符,返回的ImmutableDescriptor是在调用此方法时的字段的副本:

          Descriptor d = something();
         ImmutableDescriptor copy = ImmutableDescriptor.union(d); 
        参数
        descriptors - 要组合的描述符。 任何描述符都可以为null,在这种情况下,它将被跳过。
        结果
        一个ImmutableDescriptor是给定描述符的联合。 如果返回的对象可能与其中一个输入描述符相同,如果它是包含所有必填字段的ImmutableDescriptor。
        异常
        IllegalArgumentException - 如果两个描述符包含具有不同关联值的相同字段名称。 如果原始数组值与相同的元素具有相同的类型,则它们被认为是相同的。 如果Arrays.deepEquals(Object[],Object[])返回true,对象数组值将被视为相同。
      • getFieldValue

        public final Object getFieldValue​(String fieldName)
        描述从接口Descriptor复制
        返回特定字段名称的值,如果该名称没有值,则返回null。
        Specified by:
        getFieldValue在接口 Descriptor
        参数
        fieldName - 字段名称。
        结果
        相应的值,如果该字段不存在,则返回null。
      • getFields

        public final String[] getFields​()
        说明从界面Descriptor复制
        以字符串数组的形式返回此描述符中包含的所有字段。
        Specified by:
        getFields在接口 Descriptor
        结果
        字符串数组的字段格式为fieldName = fieldValue
        如果字段的值不是String,那么将调用toString()方法,并将包含在括号中的返回值用作返回数组中字段的值。 如果一个字段的值为null,那么返回的数组中的字段的值将为空。 如果描述符为空,您将获得一个空数组。
        另请参见:
        Descriptor.setFields(java.lang.String[], java.lang.Object[])
      • getFieldValues

        public final Object[] getFieldValues​(String... fieldNames)
        说明从界面Descriptor复制
        将描述符中的所有字段值作为对象数组返回。 返回的值与fieldNames String数组参数的顺序相同。
        Specified by:
        getFieldValues在接口 Descriptor
        参数
        fieldNames - 应返回值的字段名称的字符串数组。 如果数组为空,那么将返回一个空数组。 如果数组为空,那么将返回所有值,就像该参数是由Descriptor.getFieldNames()返回的数组一样 如果数组中的字段名称不存在,包括其为空或空字符串的情况,那么返回的匹配数组元素将返回null。
        结果
        字段值的对象数组。 如果fieldNames的列表为空,您将获得一个空数组。
      • getFieldNames

        public final String[] getFieldNames​()
        说明从界面Descriptor复制
        返回描述符中的所有字段名。
        Specified by:
        getFieldNames在接口 Descriptor
        结果
        字符串数组字段名称。 如果描述符为空,您将获得一个空数组。
      • equals

        public boolean equals​(Object o)
        将此描述符与给定对象进行比较。 如果给定的对象也是描述符,并且两个描述符具有相同的字段名称(可能在不同情况下)和相同的关联值,则对象是相等的。 如果满足以下条件,两个描述符中的字段的相应值相等:
        • 如果一个值为null,那么另一个值也是。
        • 如果一个值是原始数组,则另一个值必须是具有相同元素的相同类型的原始数组。
        • 如果一个值是一个对象数组,那么另一个值必须也是,并且Arrays.deepEquals(Object[],Object[])必须返回true。
        • 否则Object.equals(Object)必须返回true。
        Specified by:
        equals在接口 Descriptor
        重写:
        equals中的 Object
        参数
        o - 要比较的对象。
        结果
        true如果对象是一样的; false否则。
        另请参见:
        Object.hashCode()HashMap
      • hashCode

        public int hashCode​()

        返回此描述符的哈希码值。 哈希码被计算为描述符中每个字段的哈希码的和。 名称为n ,值为v的字段的哈希码为n.toLowerCase().hashCode() ^ h 这里h是哈希码为v ,计算如下:

        • 如果v为空,则h为0。
        • 如果v是基本类型数组然后h使用的适当重载来计算java.util.Arrays.hashCode
        • 如果v是一个对象数组然后h使用计算Arrays.deepHashCode(Object[])
        • 否则hv.hashCode()
        Specified by:
        hashCode在接口 Descriptor
        重写:
        hashCodeObject
        结果
        此对象的哈希码值。
        另请参见:
        Object.equals(java.lang.Object)System.identityHashCode(java.lang.Object)
      • toString

        public String toString​()
        描述从类复制: Object
        返回对象的字符串表示形式。 一般来说, toString方法返回一个“文本上表示”该对象的字符串。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。

        toString类方法Object返回一个由类的名称,其中所述对象是其实例,该符号字符`的字符串@ ”,并且对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:

         getClass().getName() + '@' + Integer.toHexString(hashCode())
         
        重写:
        toStringObject
        结果
        对象的字符串表示形式。
      • isValid

        public boolean isValid​()
        如果所有字段都具有给定名称的合法值,则返回true。 此方法总是返回true,但是子类可以覆盖它,以在适当时返回false。
        Specified by:
        isValid在接口 Descriptor
        结果
        如果值合法,则为真。
        异常
        RuntimeOperationsException - 如果有效性检查失败。 如果描述符无效,该方法返回false,但如果尝试确定有效性失败,则返回此异常。
      • clone

        public Descriptor clone​()

        返回一个等于该描述符的描述符。 返回的描述符的更改对此描述符没有影响,反之亦然。

        此方法返回调用它的对象。 一个子类可以覆盖它,以返回另一个对象,只要合同得到尊重。

        Specified by:
        clone在接口 Descriptor
        重写:
        cloneObject
        结果
        这个实例的一个克隆。
        异常
        RuntimeOperationsException - 用于字段名称或字段值的非法值。 如果由于任何原因描述符构造失败,将抛出此异常。
        另请参见:
        Cloneable
      • setFields

        public final void setFields​(String[] fieldNames,
                                    Object[] fieldValues)
                             throws RuntimeOperationsException
        此操作不受支持,因为此类是不可变的。 如果该调用会改变一个可变的描述具有相同的内容,那么RuntimeOperationsException包装的UnsupportedOperationException被抛出。 否则,行为与可变描述符相同:由于非法参数引起异常,或者没有任何效果。
        Specified by:
        setFields在接口 Descriptor
        参数
        fieldNames - 字符串数组字段名称。 数组和数组元素不能为空。
        fieldValues - 相应字段值的对象数组。 数组不能为null。 数组的元素可以为空。
        异常
        RuntimeOperationsException - 如果由于任何原因更改失败。 如果fieldNamesfieldValues为空,或者如果数组的长度不同,或者其中一个中存在非法值,则包装的异常为IllegalArgumentException 如果描述符是不可变的,则包装的异常是UnsupportedOperationException ,并且调用将改变其内容。
        另请参见:
        Descriptor.getFields()
      • removeField

        public final void removeField​(String fieldName)
        从描述符中删除一个字段。
        Specified by:
        removeField在接口 Descriptor
        参数
        fieldName - 要删除的字段的字符串名称。 如果字段名称是非法的或没有找到该字段,则不会抛出异常。
        异常
        RuntimeOperationsException - 如果给定名称的字段存在且描述符是不可变的。 包装的例外将是一个UnsupportedOperationException