类 ArrayType<T>

java.lang.Object
javax.management.openmbean.OpenType <T>
javax.management.openmbean.ArrayType<T>
类型参数:
T - 此 ArrayType 描述的数组必须具有的 Java 组件类型。
所有已实现的接口:
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
参见:
  • 构造方法详细信息

    • ArrayType

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

      当在 ArrayType 实例上调用时,getClassName 方法返回它描述的数组实例的类名(遵循 java.lang.ClassgetName 方法定义的规则),而不是数组元素的类名(通过调用 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 的类名不是开放数据允许的 Java 类名之一。
    • ArrayType

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

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

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

      当在 ArrayType 实例上调用时,getClassName 方法返回它描述的数组实例的类名(遵循 java.lang.ClassgetName 方法定义的规则),而不是数组元素的类名(通过调用 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 - 此 ArrayType 实例描述的数组中包含的元素值的 SimpleType
      primitiveArray - true 当此数组描述原始数组时。
      抛出:
      IllegalArgumentException - 如果 dimension 不是正整数。
      OpenDataException - 如果 primitiveArraytrue 并且 elementType 不是原始类型的有效 SimpleType
      自从:
      1.6
  • 方法详情

    • getDimension

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

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

      public boolean isPrimitiveArray()
      如果此开放类型描述的开放数据值是原始数组,则返回 true,否则返回 false
      返回:
      如果这是原始数组类型,则为真。
      自从:
      1.6
    • isValue

      public boolean isValue(Object  obj)
      测试是否对象是这个 ArrayType 实例的值。

      此方法返回 true 当且仅当对象不为空,对象是一个数组,以下任何一个是 true

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

      public boolean equals(Object  obj)
      比较指定的 obj 参数与此 ArrayType 实例是否相等。

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

      指定者:
      equals 在类 OpenType<T>
      参数:
      obj - 要与此 ArrayType 实例进行相等比较的对象;如果对象null 或不是类 ArrayType 的实例,此方法返回 false
      返回:
      true 如果指定对象等于此 ArrayType 实例。
      参见:
    • hashCode

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

      ArrayType 实例的哈希码是equals 比较中使用的所有信息元素的哈希码的总和(即维度、元素的开放类型和原始数组标志)。原始值的哈希码是相应装箱对象的哈希码(例如 true 的哈希码是 Boolean.TRUE.hashCode() )。这确保 t1.equals(t2) 暗示 t1.hashCode()==t2.hashCode() 对于任何两个 ArrayType 实例 t1t2,正如方法 Object.hashCode() 的一般契约所要求的那样。

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

      重写:
      hashCode 在类 Object
      返回:
      ArrayType 实例的哈希码值
      参见:
    • toString

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

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

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

      指定者:
      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 的类名不是开放数据允许的 Java 类名之一。
      自从:
      1.6
    • getPrimitiveArrayType

      public static <T> ArrayType <T> getPrimitiveArrayType(Class <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[][].class等。返回的ArrayTypegetElementOpenType() 方法返回数组原始类型的包装器类型对应的SimpleType
      返回:
      一个ArrayType实例
      抛出:
      IllegalArgumentException - 如果数组类不是原始数组。
      自从:
      1.6