JavaTM 2 Platform
Standard Ed. 6

javax.management.openmbean
类 ArrayType<T>

java.lang.Object
  继承者 javax.management.openmbean.OpenType<T>
      继承者 javax.management.openmbean.ArrayType<T>
所有已实现的接口:
Serializable

public class ArrayType<T>
extends OpenType<T>

ArrayType 类是一种开放类型 类,其实例描述了作为开放数据 值的 n 维数组的所有开放数据 值。

有效 ArrayType 实例的示例有:

 // 2-dimension array of java.lang.String
 ArrayType a1 = new ArrayType(2, SimpleType.STRING);

 // 1-dimension array of int
 ArrayType a2 = new ArrayType(SimpleType.INTEGER, true);

 // 1-dimension array of java.lang.Integer
 ArrayType a3 = new ArrayType(SimpleType.INTEGER, false);

 // 4-dimension array of int
 ArrayType a4 = new ArrayType(3, a2);

 // 4-dimension array of java.lang.Integer
 ArrayType a5 = new ArrayType(3, a3);

 // 1-dimension array of java.lang.String
 ArrayType a6 = new ArrayType(SimpleType.STRING, false);

 // 1-dimension array of long
 ArrayType a7 = new ArrayType(SimpleType.LONG, true);

 // 1-dimension array of java.lang.Integer
 ArrayType a8 = ArrayType.getArrayType(SimpleType.INTEGER);

 // 2-dimension array of java.lang.Integer
 ArrayType a9 = ArrayType.getArrayType(a8);

 // 2-dimension array of int
 ArrayType a10 = ArrayType.getPrimitiveArrayType(int[][].class);

 // 3-dimension array of int
 ArrayType a11 = ArrayType.getArrayType(a10);

 // 1-dimension array of float
 ArrayType a12 = ArrayType.getPrimitiveArrayType(float[].class);

 // 2-dimension array of float
 ArrayType a13 = ArrayType.getArrayType(a12);

 // 1-dimension array of javax.management.ObjectName
 ArrayType a14 = ArrayType.getArrayType(SimpleType.OBJECTNAME);

 // 2-dimension array of javax.management.ObjectName
 ArrayType a15 = ArrayType.getArrayType(a14);

 // 3-dimension array of java.lang.String
 ArrayType a16 = new ArrayType(3, SimpleType.STRING);

 // 1-dimension array of java.lang.String
 ArrayType a17 = new ArrayType(1, SimpleType.STRING);

 // 2-dimension array of java.lang.String
 ArrayType a18 = new ArrayType(1, a17);

 // 3-dimension array of java.lang.String
 ArrayType a19 = new ArrayType(1, a18);
 

从以下版本开始:
1.5
另请参见:
序列化表格

字段摘要
 
从类 javax.management.openmbean.OpenType 继承的字段
ALLOWED_CLASSNAMES, ALLOWED_CLASSNAMES_LIST
 
构造方法摘要
ArrayType(int dimension, OpenType<?> elementType)
          构造一个描述开放数据 值的 ArrayType 实例,该值是其元素的开放类型elementType、元素的维度为 dimension 的数组。
ArrayType(SimpleType<?> elementType, boolean primitiveArray)
          为提供的 SimpleType 构造一个一维 ArrayType 实例。
 
方法摘要
 boolean equals(Object obj)
          比较指定的 obj 参数与此 ArrayType 实例的相等性。
static
<E> ArrayType<E[]>
getArrayType(OpenType<E> elementType)
          以类型安全的方式创建一个 ArrayType 实例。
 int getDimension()
          返回此 ArrayType 实例描述的数组的维度。
 OpenType<?> getElementOpenType()
          返回此 ArrayType 实例描述的数组中包含的元素值的开放类型
static
<T> ArrayType<T>
getPrimitiveArrayType(Class<T> arrayClass)
          以类型安全的方式创建一个 ArrayType 实例。
 int hashCode()
          返回此 ArrayType 实例的哈希码值。
 boolean isPrimitiveArray()
          如果此开放类型描述的开放数据值是基本类型数组,则返回 true;否则返回 false
 boolean isValue(Object obj)
          测试 obj 是否为此 ArrayType 实例的值。
 String toString()
          返回此 ArrayType 实例的字符串表示形式。
 
从类 javax.management.openmbean.OpenType 继承的方法
getClassName, getDescription, getTypeName, isArray
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

ArrayType

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

ArrayType 实例上调用时,getClassName 方法会返回它所描述的数组实例的类名(按照 java.lang.ClassgetName 方法定义的规则),而不是数组元素的类名(由对 getElementOpenType().getClassName() 的调用返回)。

还可以将对应于此 ArrayType 实例类型名称的内部字段设置为它描述的数组实例的类名。换句话说,方法 getClassNamegetTypeName 返回相同的字符串值。将对应于此 ArrayType 实例的描述的内部字段设置为符合以下模板的字符串值:

例如,以下代码片段:

 ArrayType t = new ArrayType(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 t1 = new ArrayType(1, SimpleType.STRING);
 ArrayType t2 = new ArrayType(1, t1);
 ArrayType t3 = new ArrayType(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 实例。

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

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

ArrayType 实例上调用时,getClassName 方法会返回它描述的数组实例的类名(按照 java.lang.ClassgetName 方法定义的规则),而不是数组元素的类名(由对 getElementOpenType().getClassName() 的调用返回)。

还可以将对应于此 ArrayType 实例类型名称的内部字段设置为它描述的数组实例的类名。换句话说,方法 getClassNamegetTypeName 返回相同的字符串值。将对应于此 ArrayType 实例的描述的内部字段设置为符合以下模板的字符串值:

例如,以下代码片段:

 ArrayType t = new ArrayType(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

返回:
如果此为基本类型数组,则返回 true。
从以下版本开始:
1.6

isValue

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

当且仅当 obj 不为 null,obj 是一个数组,并且下面任何一个条件为 true 时,此方法才返回 true

指定者:
OpenType<T> 中的 isValue
参数:
obj - 要测试的对象。
返回:
如果 obj 是此 ArrayType 实例的一个值,则返回 true

equals

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

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

指定者:
OpenType<T> 中的 equals
参数:
obj - 与此 ArrayType 实例比较相等性的对象;如果 objnull,或者不是类 ArrayType 的一个实例,则此方法返回 false
返回:
如果指定的对象等于此 ArrayType 实例,则返回 true
另请参见:
Object.hashCode(), Hashtable

hashCode

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

ArrayType 实例的哈希码是在 equals 比较中使用的信息的所有元素的哈希码总和(即维度、元素的开放类型和基本类型数组标记)。基本类型值的哈希码是其对应装箱对象的哈希码(例如,true 的哈希码为 Boolean.TRUE.hashCode())。这确保 t1.equals(t2) 意味着对于任何两个 ArrayType 实例 t1t2 而言,都存在 t1.hashCode()==t2.hashCode(),这是方法 Object.hashCode() 的通用协定所要求的。

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

指定者:
OpenType<T> 中的 hashCode
返回:
ArrayType 实例的哈希码值
另请参见:
Object.equals(java.lang.Object), Hashtable

toString

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

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

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

指定者:
OpenType<T> 中的 toString
返回:
ArrayType 实例的字符串表示形式

getArrayType

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

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

使用相同的参数调用此方法两次可以返回相同的对象,或者相等但不同的两个对象。

例如,以下代码片段:

 ArrayType t1 = ArrayType.getArrayType(SimpleType.STRING);
 ArrayType t2 = ArrayType.getArrayType(t1);
 ArrayType 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
 

参数:
elementType - 此 ArrayType 实例描述的数组中包含的元素值的开放类型;必须是 SimpleTypeCompositeTypeTabularType 的一个实例,或者另一个以 SimpleTypeCompositeTypeTabularType 作为其 elementTypeArrayType
抛出:
OpenDataException - 如果 elementType 的 className 不是一个受允许的开放数据 Java 类名称。
从以下版本开始:
1.6

getPrimitiveArrayType

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

使用相同的参数调用此方法两次可以返回相同的对象,或者相等但不同的两个对象。

例如,以下代码片段:

 ArrayType 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
 

参数:
arrayClass - 基本类型数组类,如 int[].classboolean[][].class 等等。返回 ArrayTypegetElementOpenType() 方法将返回对应于基本类型数组包装器类型的 SimpleType
抛出:
IllegalArgumentException - 如果 arrayClass 不是基本类型数组。
从以下版本开始:
1.6

JavaTM 2 Platform
Standard Ed. 6

提交错误或意见

版权所有 2008 Sun Microsystems, Inc. 保留所有权利。请遵守GNU General Public License, version 2 only