模块  java.management

Class ArrayType<T>

  • 实现的所有接口
    Serializable

    public class ArrayType<T>
    extends OpenType<T>
    所述ArrayType类是开放类型类,其实例描述了作为开放数据值的n维阵列所有打开数据值。

    有效的ArrayType实例的示例如下:

       // 2-dimension array of java.lang.String ArrayType<String[][]> a1 = new ArrayType<String[][]>(2, SimpleType.STRING); // 1-dimension array of int ArrayType<int[]> a2 = new ArrayType<int[]>(SimpleType.INTEGER, true); // 1-dimension array of java.lang.Integer ArrayType<Integer[]> a3 = new ArrayType<Integer[]>(SimpleType.INTEGER, false); // 4-dimension array of int ArrayType<int[][][][]> a4 = new ArrayType<int[][][][]>(3, a2); // 4-dimension array of java.lang.Integer ArrayType<Integer[][][][]> a5 = new ArrayType<Integer[][][][]>(3, a3); // 1-dimension array of java.lang.String ArrayType<String[]> a6 = new ArrayType<String[]>(SimpleType.STRING, false); // 1-dimension array of long ArrayType<long[]> a7 = new ArrayType<long[]>(SimpleType.LONG, true); // 1-dimension array of java.lang.Integer ArrayType<Integer[]> a8 = ArrayType.getArrayType(SimpleType.INTEGER); // 2-dimension array of java.lang.Integer ArrayType<Integer[][]> a9 = ArrayType.getArrayType(a8); // 2-dimension array of int ArrayType<int[][]> a10 = ArrayType.getPrimitiveArrayType(int[][].class); // 3-dimension array of int ArrayType<int[][][]> a11 = ArrayType.getArrayType(a10); // 1-dimension array of float ArrayType<float[]> a12 = ArrayType.getPrimitiveArrayType(float[].class); // 2-dimension array of float ArrayType<float[][]> a13 = ArrayType.getArrayType(a12); // 1-dimension array of javax.management.ObjectName ArrayType<ObjectName[]> a14 = ArrayType.getArrayType(SimpleType.OBJECTNAME); // 2-dimension array of javax.management.ObjectName ArrayType<ObjectName[][]> a15 = ArrayType.getArrayType(a14); // 3-dimension array of java.lang.String ArrayType<String[][][]> a16 = new ArrayType<String[][][]>(3, SimpleType.STRING); // 1-dimension array of java.lang.String ArrayType<String[]> a17 = new ArrayType<String[]>(1, SimpleType.STRING); // 2-dimension array of java.lang.String ArrayType<String[][]> a18 = new ArrayType<String[][]>(1, a17); // 3-dimension array of java.lang.String ArrayType<String[][][]> a19 = new ArrayType<String[][][]>(1, a18);  
    从以下版本开始:
    1.5
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • ArrayType

        public ArrayType​(int dimension,
                         OpenType<?> elementType)
                  throws OpenDataException
        构造一个描述开放数据值的ArrayType实例,该实例是具有开放类型elementType的元素的维度维度的数组。

        ArrayType实例上调用时, getClassName方法返回它描述的数组实例的类名(遵循getName方法java.lang.Class定义的规则),而不是数组元素的类名(通过调用getElementOpenType().getClassName()返回) )。

        与此ArrayType实例的类型名称对应的内部字段也设置为其描述的数组实例的类名。 换句话说,方法getClassNamegetTypeName返回相同的字符串值。 与此ArrayType实例的描述对应的内部字段设置为字符串值,该字符串值遵循以下模板:

        • 如果是非原始数组: <dimension>-dimension array of <element_class_name>
        • 如果原始数组: <dimension>-dimension array of <primitive_type_of_the_element_class_name>

        作为示例,以下代码:

           ArrayType<String[][][]> t = new ArrayType<String[][][]>(3, SimpleType.STRING); System.out.println("array class name = " + t.getClassName()); System.out.println("element class name = " + t.getElementOpenType().getClassName()); System.out.println("array type name = " + t.getTypeName()); System.out.println("array type description = " + t.getDescription());  
        会产生以下输出:
           array class name = [[[Ljava.lang.String; element class name = java.lang.String array type name = [[[Ljava.lang.String; array type description = 3-dimension array of java.lang.String  
        以下代码与上面列出的代码相同也会产生相同的输出:
           ArrayType<String[]> t1 = new ArrayType<String[]>(1, SimpleType.STRING); ArrayType<String[][]> t2 = new ArrayType<String[][]>(1, t1); ArrayType<String[][][]> t3 = new ArrayType<String[][][]>(1, t2); System.out.println("array class name = " + t3.getClassName()); System.out.println("element class name = " + t3.getElementOpenType().getClassName()); System.out.println("array type name = " + t3.getTypeName()); System.out.println("array type description = " + t3.getDescription());  
        参数
        dimension - 此ArrayType实例描述的数组的维度; 必须大于或等于1。
        elementType - 此ArrayType实例描述的数组中包含的开放类型的元素值; 必须是实例SimpleTypeCompositeTypeTabularType或另一ArrayType带有SimpleTypeCompositeTypeTabularType作为其elementType
        异常
        IllegalArgumentException - 如果 dimension不是正整数。
        OpenDataException - 如果 elementType的className不是打开数据的允许Java类名称之一。
      • ArrayType

        public ArrayType​(SimpleType<?> elementType,
                         boolean primitiveArray)
                  throws OpenDataException
        为提供的SimpleType构造一维ArrayType实例。

        primitiveArraytrue时,此构造函数支持创建基本类型数组。

        对于原始数组, getElementOpenType()方法返回对应于数组基元类型的包装类型的SimpleType

        当被调用的ArrayType例如, getClassName方法返回它所描述的阵列的实例(以下由定义的规则的类名getName的方法java.lang.Class ),而不是数组元素的类名(其通过调用返回到getElementOpenType().getClassName() )。

        与此ArrayType实例的类型名称对应的内部字段也设置为其描述的数组实例的类名。 换句话说,方法getClassNamegetTypeName返回相同的字符串值。 与此ArrayType实例的描述对应的内部字段设置为字符串值,该值遵循以下模板:

        • 如果是非原始数组: 1-dimension array of <element_class_name>
        • 如果原始数组: 1-dimension array of <primitive_type_of_the_element_class_name>

        作为示例,以下代码:

           ArrayType<int[]> t = new ArrayType<int[]>(SimpleType.INTEGER, true); System.out.println("array class name = " + t.getClassName()); System.out.println("element class name = " + t.getElementOpenType().getClassName()); System.out.println("array type name = " + t.getTypeName()); System.out.println("array type description = " + t.getDescription());  
        会产生以下输出:
           array class name = [I element class name = java.lang.Integer array type name = [I array type description = 1-dimension array of int  
        参数
        elementType -所述 SimpleType包含在由该所述阵列中的元素值的 ArrayType实例。
        primitiveArray - true此数组描述原始数组。
        异常
        IllegalArgumentException - 如果 dimension不是正整数。
        OpenDataException -如果 primitiveArraytrueelementType不是有效 SimpleType的基本类型。
        从以下版本开始:
        1.6
    • 方法详细信息

      • getDimension

        public int getDimension()
        返回此 ArrayType实例描述的数组的维度。
        结果
        维度。
      • getElementOpenType

        public OpenType<?> getElementOpenType()
        返回此 ArrayType实例描述的数组中包含的元素值的 开放类型
        结果
        元素类型。
      • isPrimitiveArray

        public boolean isPrimitiveArray()
        返回 true如果此开放类型描述的开放数据值是原始阵列, false否则。
        结果
        如果这是一个基本数组类型,则返回true。
        从以下版本开始:
        1.6
      • isValue

        public boolean isValue​(Object obj)
        测试obj是否为此ArrayType实例的值。

        当且仅当obj不为null时,此方法返回trueobj是一个数组,并且以下任何一个都是true

        • 如果此ArrayType实例描述了SimpleType元素的数组或其对应的基元类型,则obj的类名与为此ArrayType实例定义的className字段相同(即getClassName方法返回的类名,包括维度信息) ,
        • 如果此ArrayType实例描述了实现TabularData接口或CompositeData接口的类数组,则obj可分配给此类声明的数组,并且{ obj中包含的每个元素都为null或此ArrayType指定的元素的开放类型的ArrayType实例。
        Specified by:
        isValue ,类 OpenType<T>
        参数
        obj - 要测试的对象。
        结果
        true如果 obj是此 ArrayType实例的值。
      • equals

        public boolean equals​(Object obj)
        将指定的obj参数与此ArrayType实例进行比较以获得相等性。

        当且仅当它们描述具有相同维度的数组实例,元素的开放类型和基本数组标志时,两个ArrayType实例是相等的。

        Specified by:
        equalsOpenType<T>
        参数
        obj - 要与此ArrayType实例进行相等性比较的对象; 如果objnull或者不是类ArrayType的实例,则此方法返回false
        结果
        true如果指定的对象等于此 ArrayType实例。
        另请参见:
        Object.hashCode()HashMap
      • hashCode

        public int hashCode()
        返回此ArrayType实例的哈希码值。

        ArrayType实例的哈希码是equals比较中使用的所有信息元素的哈希码的总和(即维度,元素的开放类型和原始数组标志)。 原始值的哈希码是对应的盒装对象的哈希true (例如, true的哈希trueBoolean.TRUE.hashCode() )。 这确保了t1.equals(t2)意味着t1.hashCode()==t2.hashCode()对于任何两个ArrayType实例t1t2 ,所要求的方法的常规合同Object.hashCode()

        由于ArrayType实例是不可变的,因此在第一次调用hashCode ,此实例的哈希码计算一次,然后为后续调用返回相同的值。

        重写:
        hashCode在类 Object
        结果
        ArrayType实例的哈希码值
        另请参见:
        Object.equals(java.lang.Object)System.identityHashCode(java.lang.Object)
      • toString

        public String toString()
        返回此ArrayType实例的字符串表示形式。

        字符串表示由此类的名称(即javax.management.openmbean.ArrayType ),类型名称,维度,元素的开放类型以及为此实例定义的基本数组标志组成。

        由于ArrayType实例是不可变的,因此在第一次调用toString ,将计算此实例的字符串表示形式一次,然后为后续调用返回相同的值。

        Specified by:
        toString ,类 OpenType<T>
        结果
        ArrayType实例的字符串表示形式
      • getArrayType

        public static <E> ArrayType<E[]> getArrayType​(OpenType<E> elementType)
                                               throws OpenDataException
        以类型安全的方式创建ArrayType实例。

        可以根据需要多次调用此方法来构建多维数组。

        使用相同的参数调用此方法两次可能会返回相同的对象或两个相同但不相同的对象。

        作为示例,以下代码:

           ArrayType<String[]> t1 = ArrayType.getArrayType(SimpleType.STRING); ArrayType<String[][]> t2 = ArrayType.getArrayType(t1); ArrayType<String[][][]> t3 = ArrayType.getArrayType(t2); System.out.println("array class name = " + t3.getClassName()); System.out.println("element class name = " + t3.getElementOpenType().getClassName()); System.out.println("array type name = " + t3.getTypeName()); System.out.println("array type description = " + t3.getDescription());  
        会产生以下输出:
           array class name = [[[Ljava.lang.String; element class name = java.lang.String array type name = [[[Ljava.lang.String; array type description = 3-dimension array of java.lang.String  
        参数类型
        E - 描述实例必须具有的Java类型
        参数
        elementType - 此ArrayType实例描述的数组中包含的开放类型的元素值; 必须是实例SimpleTypeCompositeTypeTabularType或另一ArrayType带有SimpleTypeCompositeTypeTabularType作为其elementType
        结果
        一个 ArrayType实例
        异常
        OpenDataException - 如果 elementType的className不是打开数据的允许Java类名称之一。
        从以下版本开始:
        1.6
      • getPrimitiveArrayType

        public static <T> ArrayType<T> getPrimitiveArrayType​(<T> arrayClass)
        以类型安全的方式创建ArrayType实例。

        使用相同的参数调用此方法两次可能会返回相同的对象或两个相同但不相同的对象。

        作为示例,以下代码:

           ArrayType<int[][][]> t = ArrayType.getPrimitiveArrayType(int[][][].class); System.out.println("array class name = " + t.getClassName()); System.out.println("element class name = " + t.getElementOpenType().getClassName()); System.out.println("array type name = " + t.getTypeName()); System.out.println("array type description = " + t.getDescription());  
        会产生以下输出:
           array class name = [[[I element class name = java.lang.Integer array type name = [[[I array type description = 3-dimension array of int  
        参数类型
        T - 描述实例必须具有的Java类型
        参数
        arrayClass -基本数组类如int[].classboolean[][].classgetElementOpenType()返回的方法ArrayType返回SimpleType对应于包装类型基本类型的数组的。
        结果
        一个 ArrayType实例
        异常
        IllegalArgumentException - 如果 arrayClass不是基本数组。
        从以下版本开始:
        1.6