Module java.management

Class 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维java.lang.String数组
 ArrayType<String[][]> a1 = new ArrayType<String[][]>(2, SimpleType.STRING);

 // 1维int数组
 ArrayType<int[]> a2 = new ArrayType<int[]>(SimpleType.INTEGER, true);

 // 1维java.lang.Integer数组
 ArrayType<Integer[]> a3 = new ArrayType<Integer[]>(SimpleType.INTEGER, false);

 // 4维int数组
 ArrayType<int[][][][]> a4 = new ArrayType<int[][][][]>(3, a2);

 // 4维java.lang.Integer数组
 ArrayType<Integer[][][][]> a5 = new ArrayType<Integer[][][][]>(3, a3);

 // 1维java.lang.String数组
 ArrayType<String[]> a6 = new ArrayType<String[]>(SimpleType.STRING, false);

 // 1维long数组
 ArrayType<long[]> a7 = new ArrayType<long[]>(SimpleType.LONG, true);

 // 1维java.lang.Integer数组
 ArrayType<Integer[]> a8 = ArrayType.getArrayType(SimpleType.INTEGER);

 // 2维java.lang.Integer数组
 ArrayType<Integer[][]> a9 = ArrayType.getArrayType(a8);

 // 2维int数组
 ArrayType<int[][]> a10 = ArrayType.getPrimitiveArrayType(int[][].class);

 // 3维int数组
 ArrayType<int[][][]> a11 = ArrayType.getArrayType(a10);

 // 1维float数组
 ArrayType<float[]> a12 = ArrayType.getPrimitiveArrayType(float[].class);

 // 2维float数组
 ArrayType<float[][]> a13 = ArrayType.getArrayType(a12);

 // 1维javax.management.ObjectName数组
 ArrayType<ObjectName[]> a14 = ArrayType.getArrayType(SimpleType.OBJECTNAME);

 // 2维javax.management.ObjectName数组
 ArrayType<ObjectName[][]> a15 = ArrayType.getArrayType(a14);

 // 3维java.lang.String数组
 ArrayType<String[][][]> a16 = new ArrayType<String[][][]>(3, SimpleType.STRING);

 // 1维java.lang.String数组
 ArrayType<String[]> a17 = new ArrayType<String[]>(1, SimpleType.STRING);

 // 2维java.lang.String数组
 ArrayType<String[][]> a18 = new ArrayType<String[][]>(1, a17);

 // 3维java.lang.String数组
 ArrayType<String[][][]> a19 = new ArrayType<String[][][]>(1, a18);
 
自从:
1.5
参见:
  • Constructor Details

    • ArrayType

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

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

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

      • 如果非原始数组:<dimension>维数组 of <element_class_name>
      • 如果原始数组:<dimension>维数组 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维数组 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或另一个具有SimpleTypeCompositeTypeTabularType作为其elementTypeArrayType的实例。
      抛出:
      IllegalArgumentException - 如果dimension不是正整数。
      OpenDataException - 如果elementType的className不是开放数据的允许的Java类名之一。
    • ArrayType

      public ArrayType(SimpleType<?> elementType, boolean primitiveArray) throws OpenDataException
      为提供的SimpleType构造单维ArrayType实例。
      参数:
      elementType - 此ArrayType实例描述的数组中包含的元素值的SimpleType
      primitiveArray - 当此数组描述原始数组时为true
      抛出:
      IllegalArgumentException - 如果dimension不是正整数。
      OpenDataException - 如果primitiveArraytrueelementType不是原始类型的有效SimpleType
      自从:
      1.6
  • Method Details

    • 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,obj是一个数组,并且以下任一条件为true,则此方法返回true

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

      public boolean equals(Object obj)
      将指定的obj参数与此ArrayType实例进行比较,以确定它们是否相等。

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

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

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

      ArrayType实例的哈希码是用于equals比较的所有信息元素的哈希码之和(即维度、元素开放类型和原始数组标志)。原始值的哈希码是相应装箱对象的哈希码的总和(例如,true的哈希码是Boolean.TRUE.hashCode())。这确保了对于任何两个ArrayType实例t1t2,如果t1.equals(t2),则t1.hashCode()==t2.hashCode(),这是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或另一个具有SimpleTypeCompositeTypeTabularType作为其elementTypeArrayType的实例。
      返回:
      一个ArrayType实例
      抛出:
      OpenDataException - 如果elementType的className不是开放数据的允许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 - 如果arrayClass不是原始数组。
      自:
      1.6